- 論壇徽章:
- 0
|
最近想學(xué)GTK編程。。。下了那個(gè)官方的GTK+ 2.0 教程。
- #include <gtk/gtk.h>;
- /* 這是一個(gè)回調(diào)函數(shù)。data 參數(shù)在本示例中被忽略。
- * 后面有更多的回調(diào)函數(shù)示例。*/
- void hello( GtkWidget *widget,
- gpointer data )
- {
- g_print ("Hello World\n");
- }
- gint delete_event( GtkWidget *widget,
- GdkEvent *event,
- gpointer data )
- {
- /* 如果你的 "delete_event" 信號處理函數(shù)返回 FALSE,GTK 會發(fā)出 "destroy" 信號。
- * 返回 TRUE,你不希望關(guān)閉窗口。
- * 當(dāng)你想彈出“你確定要退出嗎?”對話框時(shí)它很有用。*/
- g_print ("delete event occurred\n");
- /* 改 TRUE 為 FALSE 程序會關(guān)閉。*/
- return TRUE;
- }
- /* 另一個(gè)回調(diào)函數(shù) */
- void destroy( GtkWidget *widget,
- gpointer data )
- {
- gtk_main_quit ();
- }
- int main( int argc,
- char *argv[] )
- {
- /* GtkWidget 是構(gòu)件的存儲類型 */
- GtkWidget *window;
- GtkWidget *button;
-
- /* 這個(gè)函數(shù)在所有的 GTK 程序都要調(diào)用。參數(shù)由命令行中解析出來并且送到該程序中*/
- gtk_init (&argc, &argv);
-
- /* 創(chuàng)建一個(gè)新窗口 */
- window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
-
- /* 當(dāng)窗口收到 "delete_event" 信號 (這個(gè)信號由窗口管理器發(fā)出,通常是“關(guān)閉”
- * 選項(xiàng)或是標(biāo)題欄上的關(guān)閉按鈕發(fā)出的),我們讓它調(diào)用在前面定義的 delete_event() 函數(shù)。
- * 傳給回調(diào)函數(shù)的 data 參數(shù)值是 NULL,它會被回調(diào)函數(shù)忽略。*/
- g_signal_connect (G_OBJECT (window), "delete_event",
- G_CALLBACK (delete_event), NULL);
-
- /* 在這里我們連接 "destroy" 事件到一個(gè)信號處理函數(shù)。
- * 對這個(gè)窗口調(diào)用 gtk_widget_destroy() 函數(shù)或在 "delete_event" 回調(diào)函數(shù)中返回 FALSE 值
- * 都會觸發(fā)這個(gè)事件。*/
- g_signal_connect (G_OBJECT (window), "destroy",
- G_CALLBACK (destroy), NULL);
-
- /* 設(shè)置窗口邊框的寬度。*/
- gtk_container_set_border_width (GTK_CONTAINER (window), 10);
-
- /* 創(chuàng)建一個(gè)標(biāo)簽為 "Hello World" 的新按鈕。*/
- button = gtk_button_new_with_label ("Hello World");
-
- /* 當(dāng)按鈕收到 "clicked" 信號時(shí)會調(diào)用 hello() 函數(shù),并將NULL傳給
- * 它作為參數(shù)。hello() 函數(shù)在前面定義了。*/
- g_signal_connect (G_OBJECT (button), "clicked",
- G_CALLBACK (hello), NULL);
-
- /* 當(dāng)點(diǎn)擊按鈕時(shí),會通過調(diào)用 gtk_widget_destroy(window) 來關(guān)閉窗口。
- * "destroy" 信號會從這里或從窗口管理器發(fā)出。*/
- g_signal_connect_swapped (G_OBJECT (button), "clicked",
- G_CALLBACK (gtk_widget_destroy),
- window);
-
- /* 把按鈕放入窗口 (一個(gè) gtk 容器) 中。*/
- gtk_container_add (GTK_CONTAINER (window), button);
-
- /* 最后一步是顯示新創(chuàng)建的按鈕和窗口 */
- gtk_widget_show (button);
- gtk_widget_show (window);
-
- /* 所有的 GTK 程序必須有一個(gè) gtk_main() 函數(shù)。程序運(yùn)行停在這里
- * 等待事件 (如鍵盤事件或鼠標(biāo)事件) 的發(fā)生。*/
- gtk_main ();
-
- return 0;
- }
復(fù)制代碼
編譯時(shí)用
gcc -Wall -g helloworld.c -o helloworld `pkg-config --cflags gtk+-2.0` \
`pkg-config --libs gtk+-2.0`
失敗了,請求各位高手指教.[/code] |
|