Процесс GTK + App не убит - PullRequest
       25

Процесс GTK + App не убит

1 голос
/ 22 марта 2012

У меня есть GTK +, работающий в приложении vs2010 c ++ для Windows.Он использует конструктор для загрузки шаблона графического интерфейса с поляны.

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

1 Ответ

2 голосов
/ 22 марта 2012

Закрытие окна не убивает процесс, если вы не настроили обратный вызов, который завершает основной цикл 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 ();
}
...