Erreurs sur le menu

Fermé
mikepro60 Messages postés 14 Date d'inscription samedi 17 août 2019 Statut Membre Dernière intervention 9 août 2020 - 9 août 2020 à 23:17
Bonsoir tout le monde, je fais actuellement une formation en langage c et je programme des applications au moyen de la bibliothèque gtk+. J'ai réalisé un programme qui affiche un menu sauf qu'il y'a des erreurs que je n'arrive pas à corriger. Quelqu'un peut il m'aider ? Je vous envoi le code source.

 #include <stdlib.h>
#include <gtk/gtk.h>

void OnQuitter(gpointer data, guint callback_action, GtkWidget*widget);
void OnAbout(gpointer data, guint callback_action, GtkWidget*widget);

// Définition des éléments du menu
static GtkItemFactoryEntry MenuItem[] = {
{"/_Fichier",NULL,NULL,0,"<Branch>"},
{"/Fichier/_Nouveau","<ctrl>N",NULL,0,"<StockItem>", GTK_STOCK_NEW},
{"/Fichier/_Ouvrir","<ctrl>O",NULL,0,"<StockItem>", GTK_STOCK_OPEN},
{"/Fichier/Enregi_strer", "<ctrl>S",NULL,0,"<StockItem>", GTK_STOCK_SAVE},
{"/Fichier/_Fermer","<ctrl>F",NULL,0,"<StockItem>", GTK_STOCK_CLOSE},
{"/Fichier/Sep1",NULL,NULL,0,"<Separator>"},
{"/Fichier/_Quitter",NULL,OnQuitter,1,"<StockItem>", GTK_STOCK_QUIT},
{"/_?",NULL,NULL,0, "<Branch>"},
{"/?/_A propos de","<ctrl>A",OnAbout,1,"<StockItem>", GTK_STOCK_HELP}

};

// Nombre d'éléments du menu
static gint iNbMenuItem = sizeof(MenuItem)/sizeof(MenuItem[0]);

int main(int argc, char**argv)
{
    GtkWidget*pWindow;
    GtkWidget*pVbox;
    GtkWidget*pMenuBar;
    GtkItemFactory*pItemFactory;
    GtkAccelGroup*pAccel;

    gtk_init(&argc,&argv);

    // Création de la fenêtre
    pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title(GTK_WINDOW(pWindow), "Menu rapide");
    gtk_window_set_default_size(GTK_WINDOW(pWindow), 320,200);
    g_signal_connect(G_OBJECT(pWindow), "destroy", G_CALLBACK(gtk_main_quit), NULL);

    // Création de la GtkVbox
    pVbox = gtk_vbox_new(FALSE,0);
    gtk_container_add(GTK_CONTAINER(pWindow), pVbox);

    // Création de la table d'acceleration
    pAccel = gtk_accel_group_new();

    /* Création du menu */

    pItemFactory = gtk_item_factory_new(GTK_TYPE_MENU_BAR, "<main>", pAccel);

    // Récupération des éléments du menu
    gtk_item_factory_create_items(pItemFactory, iNbMenuItem, MenuItem, (GtkWidget*)pWindow);

    // Récupération du widget pour l'affichage du menu
    pMenuBar = gtk_item_factory_get_widget(pItemFactory, "<main>");

    // Ajout du menu en haut de la fenêtre
    gtk_box_pack_start(GTK_BOX(pVbox), pMenuBar, FALSE,FALSE,0);

    // Association des raccourcis avec la fenêtre
    gtk_window_add_accel_group(GTK_WINDOW(pWindow), pAccel);

    /* Création d'un second menu de type GTK_TYPE_OPTION_MENU */

    pItemFactory = gtk_item_factory_new(GTK_TYPE_OPTION_MENU, "<main>", NULL);

    // Récupération des éléments du menu
    gtk_item_factory_create_items(pItemFactory, iNbMenuItem, MenuItem, (GtkWidget*)pWindow);

    // Récupération du widget pour l'affichage du menu
    pMenuBar = gtk_item_factory_get_widget(pItemFactory, "<main>");

    // Ajout du menu en bas de la fenêtre
    gtk_box_pack_end(GTK_BOX(pVbox), pMenuBar, FALSE,FALSE,0);

    gtk_widget_show_all(pWindow);

    gtk_main();

    return EXIT_SUCCESS;

}

void OnQuitter(gpointer data, guint callback_action, GtkWidget*widget)
{
    GtkWidget*pQuestion;

    pQuestion = gtk_message_dialog_new(GTK_WINDOW(data),GTK_DIALOG_MODAL,GTK_MESSAGE_QUESTION,
                                       GTK_BUTTONS_YES_NO, "Voulez-vous quitter\n le programme ?");

    switch(gtk_dialog_run(GTK_DIALOG(pQuestion)))
    {
    case GTK_RESPONSE_YES:
        gtk_main_quit();
        break;
    case GTK_RESPONSE_NONE:
    case GTK_RESPONSE_NO:
        gtk_widget_destroy(pQuestion);
        break;
    }
}

void OnAbout(gpointer data, guint callback_action, GtkWidget*widget)
{
    GtkWidget*pAbout;

    pAbout = gtk_message_dialog_new(GTK_WINDOW(data), GTK_DIALOG_MODAL, GTK_MESSAGE_INFO,
                                    GTK_BUTTONS_OK, "Cours GTK+ 2.0\n" "http://www.gtk-fr.org" );

    gtk_dialog_run(GTK_DIALOG(pAbout));

    gtk_widget_destroy(pAbout);
}