1

vs2010 C++ Windows アプリで GTK+ を使用しています。ビルダーを使用して、空き地から gui テンプレートを読み込みます。

ただし、十字アイコンを使用してウィンドウを閉じるか、タスクバーで右クリックして閉じると、アプリのプロセスは強制終了されません。

プロセスが適切に強制終了されるようにするにはどうすればよいですか?

4

1 に答える 1

2

ウィンドウの削除イベントで Gtk+ メイン ループを終了するコールバックを設定しない限り、ウィンドウを閉じてもプロセスは強制終了されません。アプリケーションはgtk_main_quit()、メインループを終了する呼び出し後にのみ終了します。

GTK+ への C++ バインディングがどのように機能するかはわかりませんが、C では次のようになります ( GNOME Web サイトから取得):

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 に答える