# Native Code > برنامه نویسی با C > برنامه نویسی GTK، GTK+‎ و wxWidget >  نصب gtk در ویندوز و پیکربندی ان برای کامپایل برنامه ها در ویژوال استدیو 2005

## hamid206

برای نصب gtk در ویندوز ابتدا کتابخانه gtk برای نصب در ویندوز را از ادرس زیر دانلود و نصب کنید
http://sourceforge.net/project/showf...kage_id=111411

حال برای پیکربندی ان برای استفاده در ویژوال استدیو 2005 کار های زیر را انجام دهید
یک تکست فایل ایجاد کنید و کدهای زیر را در ان بنویسید و به نام و پسوند زیر ذخیره کنید gtk+_debug.vsprops
<?xml version="1.0" encoding="Windows-1252"?> 
<VisualStudioPropertySheet 
   ProjectType="Visual C++‎" 
   Version="8.00" 
   Name="gtk+ debug" 
   > 
   <Tool 
      Name="VCCLCompilerTool" 
      Optimization="0" 
      AdditionalIncludeDirectories="$(INCLUDE)" 
      RuntimeLibrary="3" 
      StructMemberAlignment="4" 
      AssemblerOutput="0" 
      DebugInformationFormat="4" 
   /> 
   <Tool 
      Name="VCLinkerTool" 
      AdditionalDependencies="art_lgpl_2.lib asprintf.lib atk-1.0.lib bz2.lib cairo.lib charset.lib croco-0.6.lib fontconfig.lib freetype.lib gdk_pixbuf-2.0.lib gdkglext-win32-1.0.lib gdk-win32-2.0.lib glade-2.0.lib glib-2.0.lib gmodule-2.0.lib gobject-2.0.lib gsf-1.lib gsf-win32-1.lib gthread-2.0.lib gtkglext-win32-1.0.lib gtk-win32-2.0.lib iconv.lib intl.lib jpeg.lib pango-1.0.lib pangocairo-1.0.lib pangoft2-1.0.lib pangowin32-1.0.lib png.lib popt.lib rsvg-2.lib tiff.lib xml2.lib z.lib" 
      AdditionalLibraryDirectories="$(LIB)" 
      GenerateDebugInformation="true" 
      AssemblyDebug="1" 
      GenerateMapFile="false" 
      SubSystem="1" 
      OptimizeForWindows98="1" 
   /> 
</VisualStudioPropertySheet>
یک تکست فایل دیگر ایجاد کنید و کدهای زیر را در ان بنویسید و به نام و پسوند زیر ذخیره کنید
gtk+_release.vsprops
<?xml version="1.0" encoding="Windows-1252"?> 
<VisualStudioPropertySheet 
   ProjectType="Visual C++‎" 
   Version="8.00" 
   Name="gtk+ release" 
   > 
   <Tool 
      Name="VCCLCompilerTool" 
      Optimization="2" 
      FavorSizeOrSpeed="1" 
      AdditionalIncludeDirectories="$(INCLUDE)" 
      RuntimeLibrary="2" 
      StructMemberAlignment="4" 
      AssemblerOutput="0" 
   /> 
   <Tool 
      Name="VCLinkerTool" 
      AdditionalDependencies="art_lgpl_2.lib asprintf.lib atk-1.0.lib bz2.lib cairo.lib charset.lib croco-0.6.lib fontconfig.lib freetype.lib gdk_pixbuf-2.0.lib gdkglext-win32-1.0.lib gdk-win32-2.0.lib glade-2.0.lib glib-2.0.lib gmodule-2.0.lib gobject-2.0.lib gsf-1.lib gsf-win32-1.lib gthread-2.0.lib gtkglext-win32-1.0.lib gtk-win32-2.0.lib iconv.lib intl.lib jpeg.lib pango-1.0.lib pangocairo-1.0.lib pangoft2-1.0.lib pangowin32-1.0.lib png.lib popt.lib rsvg-2.lib tiff.lib xml2.lib z.lib" 
      AdditionalLibraryDirectories="$(LIB)" 
      GenerateDebugInformation="false" 
      AssemblyDebug="0" 
      GenerateMapFile="false" 
      SubSystem="2" 
      OptimizeForWindows98="1" 
   /> 
</VisualStudioPropertySheet>

حال در vc یک پروژه تحت کنسول ایجاد کنید و در مسیر زیر این دو فایلی که ساختید به پروژه اضافه کنید
View -> Other Windows -> Property Manager
تمام شد همین!! 
حالا کدها زیر را همیشه قبل از ایجاد هر برنامه به پروژه خود اضافه کنید
/* Windows Specific Code */ 
#ifdef G_OS_WIN32 
#include <windows.h> 
int WINAPI WinMain(      
   HINSTANCE hInstance, 
   HINSTANCE hPrevInstance, 
   LPSTR lpCmdLine, 
   int nCmdShow 
) 
{ 
   return main (__argc, __argv); 
} 
#endif

برای نمونه این هم یه برنامه:

#include <gtk/gtk.h> 

static void hello( GtkWidget *widget, 
                   gpointer   data ) 
{ 
    g_print ("Hello World\n", data); 
} 

static gboolean delete_event( GtkWidget *widget, 
                              GdkEvent  *event, 
                              gpointer   data ) 
{ 
    g_print ("delete event occurred\n"); 

    return FALSE; 
} 

static void destroy( GtkWidget *widget, 
                     gpointer   data ) 
{ 
    gtk_main_quit (); 
} 

int main( int   argc, 
          char *argv[] ) 
{ 
    GtkWidget *window; 
    GtkWidget *button; 
    
    gtk_init (&argc, &argv); 
    
    window = gtk_window_new (GTK_WINDOW_TOPLEVEL); 
    
    g_signal_connect (G_OBJECT (window), "delete_event", 
            G_CALLBACK (delete_event), NULL); 
    
    g_signal_connect (G_OBJECT (window), "destroy", 
            G_CALLBACK (destroy), NULL); 
    
    gtk_container_set_border_width (GTK_CONTAINER (window), 10); 
    
    button = gtk_button_new_with_label ("Hello World"); 
    
    g_signal_connect (G_OBJECT (button), "clicked", 
            G_CALLBACK (hello), NULL); 
    
    gtk_container_add (GTK_CONTAINER (window), button); 
    
    gtk_widget_show (button); 
    
    gtk_widget_show (window); 
    
    gtk_main (); 
    
    return 0; 
} 

/* Windows Specific Code */ 
#ifdef G_OS_WIN32 
#include <windows.h> 
int WINAPI WinMain(      
   HINSTANCE hInstance, 
   HINSTANCE hPrevInstance, 
   LPSTR lpCmdLine, 
   int nCmdShow 
) 
{ 
   return main (__argc, __argv); 
} 
#endif
از این به بعد شما می تونید یک برنامه بنویسید و در دو محیط ویندوز و لینوکس استفاده کنید فقط باید کد خودتون رو دوبار کامپایل کنید استفاده از gtk در ویندوز برای ایجاد پروژه های GUI تنها یک ضرر داره اون هم این هست که سرعتش نسبت به API های ویندوز کمتر هست

----------


## hamid206

ببخشید دوستان یه سوالی داشتم برنامه هایی که برای رابط گرافیکی از gtk استفاده می کنن دیگه برای اجرا تو ویستا مشکلی نباید داشته باشن درسته؟؟ من خودم ویستا ندارم گفتم دوستان یه امتحانی بکنن ببینن چی میشه

----------


## bigcowboy

دوستان میشه مراحل ساخت یه برنامه( نه در vs 2005 ) و کامپایلر و نحوه کامپایل رو توضیح بدید.
متشکرم.

----------

