2012-03-22 31 views
1

GTK +はvs2010のC++ウィンドウアプリケーションで動作しています。 ビルダーを使用してgladeからguiテンプレートをロードします。GTK + Appプロセスが終了しない

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

どのようにプロセスがうまく終了しないようにしますか?

答えて

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(); 
} 
+0

あなた素晴らしい感謝! – Kachinsky

関連する問題