Bonsoir,

Je débute en GTK+, et je butte sur un point j'imagine fort simpliste, mais j'ai tout de même besoin de votre aide.

Ma question est simple, pourquoi mon label ne s'afiche pas dans ma fenêtre lorsque je clique sur le Menu OUVRIR ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <stdlib.h>
#include <gtk/gtk.h>
#include "prototypes.h"
#include "callback.h"
 
int main (int argc, char **argv)
{
    // DECLARATIONS DE VARIABLES
        // GtkWidgets globaux :
        GtkWidget *fenetre_principale = NULL,*vBox_princ = NULL;
        GSList *pack = NULL;
        // Widgets de la barre de menu :
        GtkWidget *menuBar = NULL,*menu = NULL,*MenuItem = NULL;
 
    gtk_init(&argc,&argv);
 
    // Création de la fenetre principale
    fenetre_principale = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_position(GTK_WINDOW(fenetre_principale),GTK_WIN_POS_CENTER);
    gtk_window_set_title(GTK_WINDOW(fenetre_principale),"Projet NUEVA");
    gtk_window_set_default_size(GTK_WINDOW(fenetre_principale),700,400);
    g_signal_connect(G_OBJECT(fenetre_principale),"delete_event",G_CALLBACK(Quitter_event),(GtkWidget *)fenetre_principale);
 
    // Création de la vBox_princ
    vBox_princ = gtk_vbox_new(FALSE,0);
    gtk_container_add(GTK_CONTAINER(fenetre_principale),vBox_princ);
 
    pack = g_slist_append (pack,(GtkWidget *)fenetre_principale);
    pack = g_slist_append (pack,(GtkWidget *)vBox_princ);
 
    // Création de la barre de menu
    menuBar = gtk_menu_bar_new();
        // MENU FICHIER
        menu = gtk_menu_new();
            //Bouton Ouvrir
            MenuItem = gtk_menu_item_new_with_mnemonic("_Ouvrir");
            gtk_menu_shell_append(GTK_MENU_SHELL(menu),MenuItem);
            g_signal_connect(G_OBJECT(MenuItem),"activate",G_CALLBACK(Ouvrir),(GSList *)pack);
            //Bouton Quitter
            MenuItem = gtk_menu_item_new_with_mnemonic("_Quitter");
            gtk_menu_shell_append(GTK_MENU_SHELL(menu),MenuItem);
            g_signal_connect(G_OBJECT(MenuItem),"activate",G_CALLBACK(Quitter_quit),(GSList *)pack);
            // Création du GTKItem Fichier
            MenuItem = gtk_menu_item_new_with_mnemonic("_Fichier");
            gtk_menu_item_set_submenu(GTK_MENU_ITEM(MenuItem),menu);
            gtk_menu_shell_append(GTK_MENU_SHELL(menuBar),MenuItem);
 
        // MENU ?
        menu = gtk_menu_new();
            //Bouton En savoir Plus
            MenuItem = gtk_menu_item_new_with_label("En savoir plus ...");
            gtk_menu_shell_append(GTK_MENU_SHELL(menu),MenuItem);
            g_signal_connect(G_OBJECT(MenuItem),"activate",G_CALLBACK(Infos),(GSList *)pack);
            // Création du GTKItem Fichier
            MenuItem = gtk_menu_item_new_with_label("?");
            gtk_menu_item_set_submenu(GTK_MENU_ITEM(MenuItem),menu);
            gtk_menu_shell_append(GTK_MENU_SHELL(menuBar),MenuItem);
 
    gtk_box_pack_start(GTK_BOX(vBox_princ),menuBar,FALSE,FALSE,0);
 
    // Affichage de la fenetre et de ses composants
    gtk_widget_show_all(fenetre_principale);
 
    gtk_main ();
 
    return EXIT_SUCCESS;
}
 
void Ouvrir (GtkWidget *widget,GSList *pack) {
 
    GtkWidget *label=NULL,*box=NULL;
    GSList *temp_list=NULL;
 
    temp_list = g_slist_nth(pack, 1);
    box = GTK_WIDGET(temp_list->data);
 
    label = gtk_label_new("ok");
    gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 0);
    gtk_widget_show(box);
 
}
Merci à vous