我有 GTK+ 在 vs2010 c++ windows 应用程序中工作。它使用构建器从 glade 加载 gui 模板。
但是,当我使用十字图标关闭窗口或在任务栏上右键单击关闭时,我的应用程序的进程不会被终止。
如何确保进程被很好地杀死?
关闭窗口不会终止进程,除非您在窗口删除事件上设置退出 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 ();
}