2012-03-22 213 views
1

我有GTK +在vs2010 C++ windows應用程序中工作。 它使用構建器從林間空地加載gui模板。GTK +應用程序未殺死

但是,當我使用十字圖標關閉窗口或右鍵單擊關閉任務欄 我的應用程序進程不會被終止。

我如何確保過程很好地被殺死?

回答

2

關閉窗口不會終止進程,除非您設置了一個回調,該回調會在窗口刪除事件中退出Gtk +主循環。只有在您致電gtk_main_quit()終止主循環後,應用程序纔會退出。

不知道C++如何結合GTK +的作品,但在C它會是這樣的(從GNOME website拍攝):

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

    GtkWidget * window; 

    gtk_init (&argc,&argv); 

    window = gtk_window_new (GTK_WINDOW_TOPLEVEL); 

    g_signal_connect (window, "delete-event", 
        G_CALLBACK (delete_event), NULL); 

    g_signal_connect (window, "destroy", 
        G_CALLBACK (destroy), NULL); 

    gtk_widget_show (window); 

    gtk_main(); 
} 

然後回調:

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(); 
} 
+0

你非常感謝! – Kachinsky 2012-03-22 14:31:04