青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 24,  comments - 62,  trackbacks - 0

Windows下的C++程序員在開發(fā)圖形用戶界面時,首先想到可能就是MFC了.對于GTK+這種GNU/Linux上出生出來的東西,就感到陌生了.GTK+是類似于MFC的圖形界面庫,跟MFC不同的是,它不是用C++,而是用C語言實現(xiàn)了面對對象的機制,但能與許多語言綁定,并具有跨平臺的特性.比如與Python的結(jié)合,就產(chǎn)生初識PyGTK"就介結(jié)了其在Windows平臺的安裝.

在Windows開發(fā)GTK+的應用程序,首先需要其在Windows版本下的庫文件,下載gladewin32項目中的gtk+-win32-devel安裝包進行安裝.我這里使用VS2005進行配置,因為相對于其他的環(huán)境,大家對于此IDE更為熟悉.接下來我將一步步介紹我在對GTK/Glande3說Hello時碰到的問題與解決方法.

丑陋的Hello World

任何像我一樣急切的人,都希望用最少的代碼,看一下GTK+的世界是怎么樣的.新建一"Win32 項目",然后向其添加gtk.c文件.

/*  file gtk.c  */ 
#include  < gtk / gtk.h > 

int  main( int  argc,  char *  argv[])
{
    GtkWidget *  window;
    gtk_init ( & argc,  & argv);

    window  =  gtk_window_new (GTK_WINDOW_TOPLEVEL);
    
    gtk_window_set_title (GTK_WINDOW (window),  " Hello World " );
    gtk_widget_show (window);
    gtk_main();

    return   0 ;
} 

現(xiàn)在麻煩的事情到了,設置相關(guān)的頭文件和庫文件.設置頭文件,右鍵點擊項目名,然后選擇屬性.然后在"常規(guī)"-"附加包含目錄"中設置你安裝gtk+-win32-devel時對應的頭文件目錄.然后再設置庫文件,需要gtk-win32-2.0.lib,glib-2.0.lib,gobject-2.0.lib.

p1_4.jpg
p2_thumb.jpg p3_thumb.jpg

設置完好后,你就可以編譯運行了,一個什么都不干的丑陋的windows窗體出現(xiàn)你面前了.若編譯不通過,缺少某些頭文件的話,查看出錯信息,然后用windows查找對應頭文件路徑,再設置.若連接出錯,很可能在設置庫文件出錯了,同理,設置相應的庫文件路徑.程序代碼很簡單,定義一個windows窗體指針,然后創(chuàng)建窗體和定義窗體標題,接著就是顯示了,和gtk主循環(huán)了.

p4_2.jpg

讓GTK+有點知覺

或許你發(fā)現(xiàn)了,點擊窗體中的"X"關(guān)閉按鈕,雖然窗體消失了,但是黑色的命令窗口還在,發(fā)現(xiàn)"任務管理器"中程序還在運行著.對,它并沒有像你想的那樣,在點擊"X"關(guān)閉按鈕結(jié)束掉程序.這些是需要你告訴程序該怎么做的.我們需要在代碼中添加相應的事件處理函數(shù). 新增加了destroy函數(shù),它就是事件處理函數(shù),在gtk也可叫做信號處理函數(shù),因為gtk中用信號來進行事件的通知.destory函數(shù)的形參是有約定寫法的,這個大家可以參見具體的手冊.在主程序中,還需要將這一函數(shù)與具體的信號進行關(guān)聯(lián),見第17行.

在完成這些工作后,你再點擊"X"按鈕時,會發(fā)現(xiàn)"命令行窗口"會出現(xiàn)"按任意鍵繼續(xù)",程序是真正地退出了.

/* file gtk.c */
#include 
static void destroy( GtkWidget *widget,
                    gpointer   data )
{
    gtk_main_quit ();            //退出gtk主循環(huán)
}

int main(int argc, char* argv[])
{

    GtkWidget* window;
    gtk_init (&argc, &argv);

    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    
    gtk_window_set_title (GTK_WINDOW (window), "Hello World");
    g_signal_connect (G_OBJECT (window), "destroy",    G_CALLBACK (destroy), NULL);

    gtk_widget_show (window);
    gtk_main();


    return 0;
}

讓黑黑的命令行窗口消失

有些人會對這個gtk應用程序總會伴隨著黑黑的命令行窗口感到不爽,包括我自己在內(nèi).不知道gtk程序在gnome下也是這樣,我沒有試過,不知道.現(xiàn)在我就使用windows平臺的特定方法,來讓它消失吧,就是使用WinMain做為主函數(shù).這方法或許不是最正規(guī)的做法,但我看來卻有效.如果要考慮到跨平臺的話,可以用條件編譯處理下.

/* file gtk.c */
#include 
#include 
static void destroy( GtkWidget *widget,
                    gpointer   data )
{
    gtk_main_quit ();            //退出gtk主循環(huán)
}

int WinMain(HINSTANCE hInstance,
            HINSTANCE hPrevInstance,
            LPSTR lpCmdLine,
            int nCmdShow
            )
{
    //為應付gtk_init所需要的參數(shù)
    int argc=1;    
    char* commandLine={"gtkApplication"};
    char** argv = &commandLine;

    GtkWidget* window;
    gtk_init (&argc, &argv);

    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    
    gtk_window_set_title (GTK_WINDOW (window), "Hello World");
    g_signal_connect (G_OBJECT (window), "destroy",    G_CALLBACK (destroy), NULL);

    gtk_widget_show (window);
    gtk_main();


    return 0;
}

好啦,現(xiàn)在再編譯運行,命令行窗口沒有了.你會發(fā)現(xiàn)真正的win32窗體了.但是在開發(fā)中,我建議用gtk時,還是讓命令行窗口顯示出來,因為gtk在出錯時,會把一些有用的信息打到命令行窗口中,這對你的幫助會很大.

posted on 2008-03-23 15:18 len 閱讀(3638) 評論(3)  編輯 收藏 引用 所屬分類: 程序開發(fā)

FeedBack:
# re: Say Hello to GTK+
2008-12-01 13:10 | Heihaier
寫的不錯!  回復  更多評論
  
# re: Say Hello to GTK+[未登錄]
2008-12-06 19:11 | peter
convert between the lpCmdLine parameter to argc / argv

http://www.cmake.org/pipermail/cmake/2004-June/005172.html

  回復  更多評論
  
# re: Say Hello to GTK+
2009-07-14 15:41 | lyre
如果使用mingwin編譯,要消除命令行窗口,只要加上-mwindows選項  回復  更多評論
  

<2008年6月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

常用鏈接

留言簿(4)

隨筆分類

隨筆檔案

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            18成人免费观看视频| 午夜精品短视频| 极品少妇一区二区三区| 久久久久一区| 亚洲国产合集| 久色成人在线| 久久精品91| 亚洲欧美经典视频| 亚洲一区日韩在线| 最新高清无码专区| 亚洲国产成人精品女人久久久| 国产日产欧美一区| 国产偷国产偷亚洲高清97cao| 欧美日韩性视频在线| 欧美精品国产| 欧美日韩精品久久久| 欧美日本韩国一区| 欧美福利电影网| 欧美理论电影在线播放| 欧美www视频在线观看| 欧美成人综合一区| 久久网站热最新地址| 久久精品人人爽| 免费av成人在线| 欧美日精品一区视频| 国产精品丝袜白浆摸在线| 久久中文精品| 欧美精品乱码久久久久久按摩| 欧美国产日本在线| 国产精品成人一区| 国产一区二区三区四区在线观看| 黑人极品videos精品欧美裸| 亚洲国产一区二区三区在线播 | 91久久久久| 日韩一级黄色大片| 亚洲欧美另类中文字幕| 久久av一区二区三区| 久久亚裔精品欧美| 欧美日韩精品福利| 欧美影院久久久| 毛片av中文字幕一区二区| 欧美国产一区二区| 午夜精品视频| 欧美福利一区二区三区| 欧美电影在线观看| 亚洲人线精品午夜| 香蕉av福利精品导航| 久久日韩精品| 欧美三区美女| 激情久久综艺| 亚洲视频在线观看一区| 久久久国产午夜精品| 欧美一二三区精品| 欧美成人激情在线| 亚洲在线视频观看| 欧美精品色综合| 国产性色一区二区| 一本色道久久综合| 麻豆av一区二区三区久久| 免费一级欧美片在线播放| 日韩亚洲精品电影| 美女精品国产| 国产日韩欧美综合| 亚洲先锋成人| 亚洲第一免费播放区| 亚洲欧美日韩区| 国产精品欧美日韩一区| 羞羞视频在线观看欧美| 午夜精品免费在线| 黄色另类av| 欧美激情视频在线播放| 欧美成人综合| 亚洲一区三区电影在线观看| 亚洲在线第一页| 尤物精品在线| 亚洲三级视频在线观看| 国产精品久久国产三级国电话系列 | 亚洲国产精品一区二区第一页| 久久五月激情| 欧美精品自拍| 欧美亚洲色图校园春色| 久久久久久久高潮| 亚洲免费久久| 欧美亚洲免费在线| 亚洲激情二区| 亚洲一区二区三区影院| 激情久久久久久久| 亚洲精品婷婷| 国自产拍偷拍福利精品免费一| 亚洲第一福利在线观看| 国产精品高潮呻吟久久av无限| 欧美在线观看视频在线| 裸体丰满少妇做受久久99精品| 一区二区三区精品视频| 先锋影音久久| 9色porny自拍视频一区二区| 99国产精品国产精品毛片| 免费成人黄色| 亚洲欧洲一级| 亚洲你懂的在线视频| 亚洲国产精品精华液2区45| 一本色道久久加勒比88综合| 国产一区二区三区黄视频| 亚洲日本乱码在线观看| 国产日韩视频| 99热精品在线观看| 91久久中文字幕| 欧美一区二区三区免费看| 一区二区毛片| 美女啪啪无遮挡免费久久网站| 午夜久久影院| 欧美精品激情blacked18| 久久亚洲影音av资源网| 国产精品久久久久久一区二区三区 | 欧美日韩精品一二三区| 免费观看一区| 国产亚洲欧美一级| 亚洲天堂偷拍| 亚洲免费中文| 欧美午夜精品理论片a级按摩| 亚洲第一区色| 亚洲精品1234| 欧美丰满高潮xxxx喷水动漫| 久久久久久久久一区二区| 国产精品毛片a∨一区二区三区|国| 欧美成人tv| 精品电影在线观看| 久久精品一区二区三区不卡| 久久se精品一区精品二区| 欧美日韩精品久久久| 亚洲国产婷婷香蕉久久久久久| 精品1区2区| 久久手机免费观看| 另类国产ts人妖高潮视频| 国产一区二区三区丝袜| 欧美一级二级三级蜜桃| 欧美在线观看视频一区二区三区 | 亚洲三级性片| 一区二区激情小说| 欧美视频日韩| 一区二区三区 在线观看视| 99国产一区二区三精品乱码| 男人天堂欧美日韩| 最近中文字幕日韩精品| 日韩一级裸体免费视频| 欧美区一区二| 中文久久精品| 久久国产精品色婷婷| 国产一区三区三区| 麻豆成人在线| 99www免费人成精品| 午夜精品视频在线| 好吊成人免视频| 欧美大片第1页| 这里只有精品在线播放| 久久不射2019中文字幕| 一区二区在线不卡| 欧美精品99| 亚洲欧美自拍偷拍| 亚洲欧洲日本mm| 欧美日本一区二区视频在线观看| 99视频一区二区三区| 午夜精品亚洲一区二区三区嫩草| 国产私拍一区| 美女视频黄免费的久久| 91久久国产精品91久久性色| 亚洲午夜极品| 在线精品一区| 国产精品看片资源| 久久综合色88| 亚洲永久免费| 最新中文字幕一区二区三区| 午夜亚洲影视| 亚洲精品一区久久久久久| 国产精品一区二区女厕厕| 久久青草欧美一区二区三区| 亚洲精品欧美| 欧美一区亚洲| av成人动漫| 伊人婷婷欧美激情| 国产精品乱码妇女bbbb| 六月婷婷久久| 欧美一区中文字幕| 一区二区av在线| 亚洲国产精品一区| 久久亚洲视频| 久久av红桃一区二区小说| 日韩一区二区久久| 1000部国产精品成人观看| 国产精品视频男人的天堂| 欧美电影资源| 麻豆国产精品va在线观看不卡| 亚洲欧美三级在线| 亚洲午夜av在线| 99视频一区| 亚洲精选大片| 91久久一区二区| 亚洲国产婷婷香蕉久久久久久| 久久综合激情| 久久九九有精品国产23|