2012-03-22 3 views
1

GTK +가 vs2010 C++ Windows 응용 프로그램에서 작동합니다. 빌더를 사용하여 glade에서 gui 템플릿을로드합니다.GTK + 앱 프로세스가 종료되지 않았습니다.

그러나 교차 아이콘을 사용하여 창을 닫거나 작업 표시 줄에서 마우스 오른쪽 버튼을 클릭하면 내 앱 프로세스가 종료되지 않습니다.

프로세스가 제대로 종료되도록하려면 어떻게해야합니까?

답변

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

관련 문제