Bonjour,
j'ai déjà parcouru les forums et le net pour essayer de résoudre mon problème mais il est un petit peu différent de ceux liés au passage de structures simples dans un callback.
Je génère un tableau de boutons à l'aide de deux boucles. Chaque bouton contient une image. J'aimerais changer d'image au clic sur le bouton à l'aide de la fonction : gtk_button_set_image(bouton,image);
J'y arrive très bien pour un bouton simple, qui n'est pas compris dans un tableau et avec une image non stockée dans une structure .
Or, mes images sont stockées dans un tableau d'images de la structure suivante :
Voici mes boucles qui associent une image à chaque bouton :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 typedef struct case_plateau { GtkWidget *image1[35];//image visible avant le clic GtkWidget *image2[35];//image visible après le clic GtkWidget *bouton[35];//bouton correspondant int i,j; }t_case;
Le tableau marche et les boutons contiennent bien image1. Image2[j] contient bien des images.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 t_case case_jeu; for(case_jeu.i=0;case_jeu.i<6;case_jeu.i++) { for(case_jeu.j=0;case_jeu.j<6;case_jeu.j++) { init_image(&case_jeu,a,nb1,nb2);//appel de la fonction qui associe une image à chaque bouton case_jeu.boutton[case_jeu.j] = gtk_button_new(); gtk_button_set_image(case_jeu.boutton[case_jeu.j],case_jeu.image1[case_jeu.j]);//on associe l'image1 au bouton ...//ajout du bouton à la table g_signal_connect(G_OBJECT(case_jeu.boutton[case_jeu.j]), "clicked", G_CALLBACK(clic1_sur_case), &case_jeu);//je transmet ma structure à ma fonction callback } }
J'aimerais maintenant associer dans mon fonction "clic1_sur_cas" mon image2 à mon bouton. Voilà ce que j'ai fait :
Mon programme plante lorsque je clique sur le bouton.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 void clic1_sur_case(GtkWidget *monbouton, gpointer data) { t_case *testcase = (t_case *)data;//Je cast data gtk_button_set_image(monbout->boutton[monbout->j],testcase.image2[testcase.j]); }
Pouvez-vous me dire où est-ce que je me suis trompé ?
Je vous remercie d'avance.
Partager