- 论坛徽章:
- 1
|
我已經安裝了 Gtk+/Win32 Development Environment + Gtk+/Win32 Runtime Environment + mingw
如果我在用 command line 編譯下面這HelloGTK.c代碼 我應該要如何下指令才正確?
我下
gcc -mwindows -mms-bitfields -s -Wall Hello.c -o HelloGTK `pkg-config --cflags gtk+-2.0` `pkg-config --libs gtk+-2.0`
或是
gcc -mwindows -mms-bitfields -s -Wall Hello.c -o HelloGTK pkg-config --cflags gtk+-2.0 pkg-config --libs gtk+-2.0
兩種都失敗 , 要怎麼才能使用command line 編譯Hello.c 這gtk 代碼?
- #include <gtk/gtk.h>
- /* 這是一個回呼函式。data 引數在本示例中被忽略。
- * 後面有更多的回呼函式示例。*/
- void hello( GtkWidget *widget,
- gpointer data )
- {
- g_print ("Hello World\n");
- }
- gint delete_event( GtkWidget *widget,
- GdkEvent *event,
- gpointer data )
- {
- /* 如果你的 "delete_event" 信號處理函式傳回 FALSE,GTK 會發出 "destroy" 信號。
- * 傳回 TRUE,你不希望關閉視窗。
- * 當你想彈出「你確定要結束嗎?」對話框時它很有用。*/
- g_print ("delete event occurred\n");
- /* 改 TRUE 為 FALSE 程式會關閉。*/
- return TRUE;
- }
- /* 另一個回呼函式 */
- void destroy( GtkWidget *widget,
- gpointer data )
- {
- gtk_main_quit ();
- }
- int main( int argc,
- char *argv[] )
- {
- /* GtkWidget 是構件的儲存型別 */
- GtkWidget *window;
- GtkWidget *button;
-
- /* 這個函式在所有的 GTK 程式都要呼叫。引數由命令列 中解析出來並且送到該程式中*/
- gtk_init (&argc, &argv);
-
- /* 生成一個新視窗 */
- window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
-
- /* 當視窗收到 "delete_event" 信號 (這個信號由視窗管理器發出,通常是「關閉」
- * 選項或是標題欄上的關閉按鈕發出的),我們讓它呼叫在前面定義的 delete_event() 函式。
- * 傳給回呼函式的 data 引數值是 NULL,它會被回呼函式忽略。*/
- g_signal_connect (G_OBJECT (window), "delete_event",
- G_CALLBACK (delete_event), NULL);
-
- /* 在這裡我們連結 "destroy" 事件到一個信號處理函式。
- * 對這個視窗呼叫 gtk_widget_destroy() 函式或在 "delete_event" 回呼函式中傳回 FALSE 值
- * 都會觸發這個事件。*/
- g_signal_connect (G_OBJECT (window), "destroy",
- G_CALLBACK (destroy), NULL);
-
- /* 設置視窗邊框的寬度。*/
- gtk_container_set_border_width (GTK_CONTAINER (window), 10);
-
- /* 生成一個標籤為 "Hello World" 的新按鈕。*/
- button = gtk_button_new_with_label ("Hello World");
-
- /* 當按鈕收到 "clicked" 信號時會呼叫 hello() 函式,並將NULL傳給
- * 它作為引數。hello() 函式在前面定義了。*/
- g_signal_connect (G_OBJECT (button), "clicked",
- G_CALLBACK (hello), NULL);
-
- /* 當點擊按鈕時,會通過呼叫 gtk_widget_destroy(window) 來關閉視窗。
- * "destroy" 信號會從這裡或從視窗管理器發出。*/
- g_signal_connect_swapped (G_OBJECT (button), "clicked",
- G_CALLBACK (gtk_widget_destroy),
- window);
-
- /* 把按鈕放入視窗 (一個 gtk 容器) 中。*/
- gtk_container_add (GTK_CONTAINER (window), button);
-
- /* 最後一步是顯示新生成的按鈕和視窗 */
- gtk_widget_show (button);
- gtk_widget_show (window);
-
- /* 所有的 GTK 程式必須有一個 gtk_main() 函式。程式運行停在這裡
- * 等待事件 (如鍵碟事件或滑鼠 事件) 的發生。*/
- gtk_main ();
-
- return 0;
- }
复制代码
謝謝 |
|