1

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

但是,当我使用十字图标关闭窗口或在任务栏上右键单击关闭时,我的应用程序的进程不会被终止。

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

4

1 回答 1

2

关闭窗口不会终止进程,除非您在窗口删除事件上设置退出 Gtk+ 主循环的回调。gtk_main_quit()只有在您调用终止主循环后,应用程序才会退出。

不知道 C++ 绑定到 GTK+ 是如何工作的,但在 C 中它会是这样的(取自GNOME 网站):

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 ();
}
于 2012-03-22T14:06:03.603 回答