2012-03-22 5 views
1

У меня есть GTK +, работающий в приложении windows vs2010 C++. Он использует построитель для загрузки шаблона gui из поляны.GTK + Процесс приложения не убит

Однако, когда я закрываю окно с помощью значка креста или щелкните правой кнопкой мыши на панели задач, процесс для моего приложения не будет убит.

Как я могу гарантировать, что процесс будет убит красиво?

ответ

2

Закрытие окна не убивает процесс, если вы не настроили обратный вызов, который завершает основной цикл Gtk + в событии удаления окна. Приложение выйдет только после того, как вы вызовете gtk_main_quit(), который завершает mainloop.

Не знаю, как 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