我在vs2010 c ++ windows应用程序中使用GTK +。 它使用构建器从glade加载gui模板。
然而,当我使用十字图标关闭窗口或右键单击任务栏上的关闭时, 我的应用程序的过程没有被杀死。
如何确保流程被很好地杀死?
答案 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 ();
}