GTK + App进程未被杀死

时间:2012-03-22 13:46:41

标签: gtk glade gtk2

我在vs2010 c ++ windows应用程序中使用GTK +。 它使用构建器从glade加载gui模板。

然而,当我使用十字图标关闭窗口或右键单击任务栏上的关闭时, 我的应用程序的过程没有被杀死。

如何确保流程被很好地杀死?

1 个答案:

答案 0 :(得分: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 ();
}