====== Creare messagebox in c e gtk2 ====== Autore: **//Fabio Di Matteo//** \\ Ultima revisione: **//30/01/2016 - 16:34//** \\ \\ {{:programmazione:gtk:2016-01-30_165104.png?200|}} {{:programmazione:gtk:2016-01-30_165134.png?200|}} {{:programmazione:gtk:2016-01-30_165151.png?200|}} \\ Ecco 3 funzioni che creano 3 message box una di info, una di conferma e l'altra d'errore: (come argomenti vogliono la finestra principale del programma che li genera, il testo principale, quello secondario e l'etichetta sul bordo della finestra della messagebox). ===== Utilizzo ===== info_message(MainWindow,"Titolo","Testo secondario del messaggio", "Titolo finestra"); err_message(MainWindow,"Titolo","Testo secondario del messaggio", "Titolo finestra"); //YesNo con controllo risposta. gint r = info_YesNo(MainWindow,"Titolo","Testo secondario del messaggio", "Titolo finestra"); if (r==GTK_RESPONSE_YES)g_print("Hai risposto si."); ===== Prototipi ===== void info_message(GtkWidget *main_window,gchar* title, gchar *msg, gchar* winlabel); gint info_YesNo(GtkWidget *main_window,gchar* title, gchar *msg, gchar* winlabel); void err_message(GtkWidget *main_window,gchar* title, gchar *msg, gchar* winlabel); ===== Codice ===== \\ \\ \\ **message.c** /* * message.c * * Copyright 2008 Fabio DM * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. */ #include void info_message(GtkWidget *main_window,gchar* title, gchar *msg, gchar* winlabel) { GtkWidget *dialog; title=g_strdup_printf("%s", title); dialog = gtk_message_dialog_new_with_markup (GTK_WINDOW (main_window), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, title); gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(dialog), "%s",(gchar *)msg); gtk_window_set_title(GTK_WINDOW(dialog),winlabel); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); } gint info_YesNo(GtkWidget *main_window,gchar* title, gchar *msg, gchar* winlabel) { GtkWidget *dialog; gint result; title=g_strdup_printf("%s", title); dialog = gtk_message_dialog_new_with_markup (GTK_WINDOW (main_window), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_WARNING, GTK_BUTTONS_YES_NO, title); gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(dialog), "%s",(gchar *)msg); gtk_window_set_title(GTK_WINDOW(dialog),winlabel); result = gtk_dialog_run (GTK_DIALOG (dialog)); switch (result) { case GTK_RESPONSE_YES: result=GTK_RESPONSE_YES ; break; case GTK_RESPONSE_NO: result=GTK_RESPONSE_NO ; break; default: result=GTK_RESPONSE_DELETE_EVENT; break; } gtk_widget_destroy (dialog); return result; } void err_message(GtkWidget *main_window,gchar* title, gchar *msg, gchar* winlabel) { GtkWidget *dialog; title=g_strdup_printf("%s", title); dialog = gtk_message_dialog_new_with_markup (GTK_WINDOW (main_window), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK,title); gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(dialog), "%s",(gchar *)msg); gtk_window_set_title(GTK_WINDOW(dialog),winlabel); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); }