Bonjour,

j'ai vu dans différents forum que, pour retourner plusieurs paramètres avec g_signal_connect, un moyen était d'utiliser une structure. Voici donc ce que j'ai fait:

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
 
typedef struct {
    GtkWidget* window_to_update;
    guchar* current_view;
    guchar selected_view;
}
strdef;
 
GtkWidget* create_main_window(void) {
    // ...
    guchar crt_view = 0;
    strdef param = {v_box_2, &crt_view, 0};
    button1 = gtk_button_new_with_label("button1");
    button2 = gtk_button_new_with_label("button2");
    button3 = gtk_button_new_with_label("button3");
    param.selected_view = (guchar) 0;
    g_signal_connect(GTK_BUTTON(button1), "clicked", G_CALLBACK(fct), &param);
    param.selected_view = (guchar) 1;
    g_signal_connect(GTK_BUTTON(button2), "clicked", G_CALLBACK(fct), &param);
    param.selected_view = (guchar) 2;
    g_signal_connect(GTK_BUTTON(button3), "clicked", G_CALLBACK(fct), &param);
}
 
static void fct(GtkButton *widget, gpointer data) {
    strdef* test = (strdef*) data;
    g_print("%i\n",(guchar) test->selected_view);
}
Le retour pour le premier bouton est bien 0. Par contre, pour le second, j'ai 208 et pour le troisième, 48 ?

Je m'attendais à 0, 1 et 2.

Quelqu'un peut m'éclairer ?

Merci.