2010-12-06 2 views
0

gtk_dialog_run()이벤트가 발생했는지 알기 (gtk_dialog_run() 실행 중)

반환 값을 확인하여 대화 상자에서 클릭 한 컨트롤/위젯을 어떻게 결정합니까? 이것은

/*toolbar test thingy*/ 
#include <gtk/gtk.h> 
#define MESSAGE_OK 1001 

void mymessage (void){ 
    GtkWidget *message = gtk_dialog_new_with_buttons("My dialog", 
     NULL, 
     GTK_DIALOG_MODAL,GTK_STOCK_OK,1001,NULL); 

    gtk_window_set_default_size(GTK_WINDOW(message),200,200); 

    gint result = gtk_dialog_run(GTK_DIALOG(message)); 
    switch(result){ 
     case MESSAGE_OK: 
      gtk_widget_destroy(message); 
      printf("you clicked message_ok"); 
     break; 


    } 
    gtk_widget_destroy(message); 
} 


int main(int argc,char *argv[]){ 

    GtkWidget *window; 
    GtkWidget *vertical_box; 
    GtkWidget *toolbar; 
    //GtkWidget *message; 

    GtkToolItem *tool_new; 


    gtk_init(&argc,&argv); 

    //setting up the main window. 
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL); 
    gtk_window_set_title(GTK_WINDOW(window),"rs-toolbar test"); 
    gtk_window_set_default_size(GTK_WINDOW(window),300,350); 
    gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER_ALWAYS); 

    //setting up the layout using vbox. 
    vertical_box = gtk_vbox_new(FALSE,0); 
    //adding the vbox layout to the Container window, window 
    gtk_container_add(GTK_CONTAINER(window),vertical_box); 

    toolbar = gtk_toolbar_new(); 
    gtk_toolbar_set_style(GTK_TOOLBAR(toolbar),GTK_TOOLBAR_ICONS); 
    gtk_container_set_border_width(GTK_CONTAINER(toolbar),2); 

    tool_new = gtk_tool_button_new_from_stock(GTK_STOCK_NEW); 
    gtk_toolbar_insert(GTK_TOOLBAR(toolbar),tool_new,-1); 
    //************************************************************************ 





    //************************************************************************ 
    gtk_box_pack_start(GTK_BOX(vertical_box),toolbar,FALSE,FALSE,0); 

    gtk_widget_show_all(window); 

    g_signal_connect(window,"destroy",G_CALLBACK(gtk_main_quit),NULL); 
    g_signal_connect(tool_new,"clicked",G_CALLBACK(mymessage),NULL); 

    gtk_main(); 



    return 0; 

} 

gtk_dialog_new_with_buttons() 함수의 사용이 올바른지 여부입니다. 컨트롤에 특정 ID를 부여하는 방법에 대해서는 잘 모릅니다. 내가 거기에서 시도한 것은 1001을 GTK_STOCK_OK의 ID로 만드는 것입니다.

답변

0

응답을 잘못된 것으로 비교하고 있습니다. gtk_dialog_runGTK_RESPONSE 상수 중 하나를 반환합니다. 스위치에있는 버튼과 비교하여 어떤 버튼을 눌렀는지 확인하십시오.

+0

나는'GTK_RESPONSE_OK'를 사용해 보았지만 제대로 작동하지 않았습니다. – silent

+1

무슨 일이 있었습니까? * 작동하지 않았다. * 작동하는 데 필요한 세부 사항이 충분하지 않습니다. –

+0

죄송합니다. 업데이트를 잊어 버리 셨습니다. 작동이 끝났습니다. 감사합니다. – silent

관련 문제