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
82
83
84
 
#include <stdlib.h>
#include <gtk/gtk.h>
 
struct _MainWindow
{
    GtkWidget *pWindow;
    GtkWidget *pVBox;
    GtkWidget *pEntryNom;
    GtkWidget *pEntryPrenom;
    GtkWidget *pButton;
    GtkWidget *pLabel;
};
 
typedef struct _MainWindow MainWindow;
 
void OnUpdate(GtkWidget *pEntryNom, GtkWidget *pEntryPrenom, gpointer data);
 
int main(int argc, char **argv)
{
    MainWindow *pApp;
 
    gtk_init(&argc, &argv);
 
    pApp = g_malloc(sizeof(MainWindow));
 
    pApp->pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title(GTK_WINDOW(pApp->pWindow), "Le widget GtkEntry");
    gtk_window_set_default_size(GTK_WINDOW(pApp->pWindow), 320, 200);
    g_signal_connect(G_OBJECT(pApp->pWindow), "destroy", G_CALLBACK(gtk_main_quit), NULL);
 
    pApp->pVBox = gtk_vbox_new(TRUE, 0);
    gtk_container_add(GTK_CONTAINER(pApp->pWindow), pApp->pVBox);
 
    /* Creation du GtkEntry */
    pApp->pEntryNom = gtk_entry_new();
    /* Insertion du GtkEntry dans la GtkVBox */
    gtk_box_pack_start(GTK_BOX(pApp->pVBox), pApp->pEntryNom, TRUE, FALSE, 0);
    /* Creation du GtkEntry */
    pApp->pEntryPrenom = gtk_entry_new();
    /* Insertion du GtkEntry dans la GtkVBox */
    gtk_box_pack_start(GTK_BOX(pApp->pVBox), pApp->pEntryPrenom, TRUE, FALSE, 0);
 
    pApp->pButton = gtk_button_new_with_label("Copier");
    gtk_box_pack_start(GTK_BOX(pApp->pVBox), pApp->pButton, TRUE, FALSE, 0);
 
    pApp->pLabel = gtk_label_new(NULL);
    gtk_box_pack_start(GTK_BOX(pApp->pVBox), pApp->pLabel, TRUE, FALSE, 0);
 
    /* Connexion du signal "activate" du GtkEntry */
    g_signal_connect(G_OBJECT(pApp->pEntryNom), "activate", G_CALLBACK(OnUpdate), (gpointer) pApp);
 
    /* Connexion du signal "activate" du GtkEntry */
    g_signal_connect(G_OBJECT(pApp->pEntryPrenom), "activate", G_CALLBACK(OnUpdate), (gpointer) pApp);
 
    /* Connexion du signal "clicked" du GtkButton */
    /* La donnee supplementaire est la GtkVBox pVBox */
    g_signal_connect(G_OBJECT(pApp->pButton), "clicked", G_CALLBACK(OnUpdate), (gpointer*) pApp);
 
    gtk_widget_show_all(pApp->pWindow);
 
    gtk_main();
 
    g_free(pApp);
 
    return EXIT_SUCCESS;
}
 
/* Fonction callback execute lors du signal "activate" */
void OnUpdate(GtkWidget *pEntryNom, GtkWidget *pEntryPrenom, gpointer data)
{
    const gchar *nom,*prenom;
    MainWindow *pApp;
 
    /* Recuperation de data */
    pApp = (MainWindow*) data;
 
    /* Recuperation du texte contenu dans le GtkEntry */
    nom = gtk_entry_get_text(GTK_ENTRY(pApp->pEntryNom));
    prenom = gtk_entry_get_text(GTK_ENTRY(pApp->pEntryPrenom));
    /* Modification du texte contenu dans le GtkLabel */
    //gtk_label_set_text(GTK_LABEL(pApp->pLabel),nom);
    printf("\nVous etes %s %s\n",nom,prenom);
}
Salut, mon programme affiche deux zones de texte et permet normalement de les afficher dans un pLabel. Compilation sans erreur mais lors de l'exécution j'obitent rien!
Est ce que c'est à cause des deux signaux vers une seule fonction callback ?!