Bonjour, tout le monde !
Voilà j'essaye de faire passer une structure personnalisée dans un g_signal_connect mais j'ai quelques soucis...
Voilà ma structure :
Le but c'est de passer en argument le builder, plusieurs chaines de caractères et même des nombres...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 typedef struct param { gpointer builder; char *str[MAXELEMENTS]; int nb_str; int entiers[MAXELEMENTS]; int nb_entiers; FILE *file; } Param;
Voilà mon code :
Et voilà ce que j'obtiens dans un terminal :
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 char remove_admin_aux(GtkBuilder *a, Param *param/){ g_print("%d\n",(*param).entiers[0]); return '1'; } /*Supprime un admin d'un fichier *admin */ void remove_admin(FILE *admin, gpointer builder){ char str[MAXNOM]="\0"; int nb_lignes; GtkButton *valide_supr = (GtkButton *) gtk_builder_get_object(builder, "valide_supr"); Param *param; Param parametres; param = ¶metres; nb_lignes = compte_lignes(admin); (*param).builder = builder; (*param).nb_str = 2; (*param).str[0] = str; (*param).entiers[0] = nb_lignes; (*param).nb_entiers = 1; (*param).file = admin; printf("nb_lignes= %d\n",nb_lignes); g_signal_connect(valide_supr, "clicked", G_CALLBACK(remove_admin_aux), param);
Je ne comprend pas pourquoi je n'obtiens pas "3"...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 nb_lignes= 3 32767
Merci pour vos réponses
Ludo
Partager