का जीटीके कार्यान्वयन मैं जीटीके का उपयोग कर Win32 के MessageBox
को लागू करने की कोशिश कर रहा हूं। एसडीएल/ओपनजीएल का उपयोग कर ऐप, इसलिए यह एक जीटीके ऐप नहीं है।संदेशबॉक्स
मैं (gtk_init
) MessageBox
समारोह के अंदर सामान की तरह initialisation संभाल इस प्रकार है:
int MessageBox(HWND hwnd, const char* text, const char* caption, UINT type)
{
GtkWidget *window = NULL;
GtkWidget *dialog = NULL;
gtk_init(>kArgc, >kArgv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
g_signal_connect(G_OBJECT(window), "delete_event", G_CALLBACK(delete_event), NULL);
g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(destroy), NULL);
// gcallback calls gtk_main_quit()
gtk_init_add((GtkFunction)gcallback, NULL);
if (type & MB_YESNO) {
dialog = gtk_message_dialog_new(GTK_WINDOW(window), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, text);
} else {
dialog = gtk_message_dialog_new(GTK_WINDOW(window), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, text);
}
gtk_window_set_title(GTK_WINDOW(dialog), caption);
gint result = gtk_dialog_run(GTK_DIALOG(dialog));
gtk_main();
gtk_widget_destroy(dialog);
if (type & MB_YESNO) {
switch (result) {
default:
case GTK_RESPONSE_DELETE_EVENT:
case GTK_RESPONSE_NO:
return IDNO;
break;
case GTK_RESPONSE_YES:
return IDYES;
break;
}
}
return IDOK;
}
अब, मैं कर रहा हूँ कोई एक अनुभवी जीटीके प्रोग्रामर भी तरह से, और मुझे लगता है कि मैं शायद कुछ कर रहा हूँ बहुत गलत
हालांकि, मेरी समस्या यह है कि इस फ़ंक्शन के साथ पॉप-अप किया गया अंतिम संवाद प्रक्रिया समाप्त होने तक चारों ओर रहता है। कोई विचार?