Bonjour a tous, donc je pratique le C depuis quelques mois ainsi que GTK.
Je n'arrive pas à mettre le doigt sur une erreur concernant apparement un pointeur permettant de remonter dans une structure seulement le point où je souhaite remonter est un tableau.
Voici le code:

la structure en question
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
typedef struct {
 
        GtkWidget* widget;
        GtkWidget* image;
        _Bool libre;
        short int proprietaire;
        guint posX;
        guint posY;
        struct reversiCase* pPlateau;
 
}reversiCase;
le type guint correspond au type unsigned int défini dans Glib

Le tableau
Code : Sélectionner tout - Visualiser dans une fenêtre à part
reversiCase plateau[LGMAX][LGMAX];
LGMAX est une constante paire.

La partie du code ou ça ne va pas:
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
for( y = 0; y < LGMAX; y++ )
{
       pHBoxLignePlateau[y] = gtk_hbox_new(FALSE, 0);
       gtk_box_pack_start( GTK_BOX( pVBoxPlateau ), pHBoxLignePlateau[y], FALSE, FALSE, 0);
       
       for( x = 0; x < LGMAX; x++)
            {

                    plateau[x][y].widget = gtk_button_new();
                    plateau[x][y].image = gtk_image_new();
                    plateau[x][y].libre = TRUE;
                    plateau[x][y].posX = x;
                    plateau[x][y].posY = y;
                    plateau[x][y].pPlateau = &plateau[x][y]; //WARNING ici !
                    gtk_container_add(GTK_CONTAINER(plateau[x][y].widget), plateau[x][y].image);
                    gtk_widget_set_usize(plateau[x][y].widget, 50, 50); 
                    g_signal_connect(G_OBJECT(plateau[x][y].widget), "clicked", G_CALLBACK(clickCase), plateau[x][y].pPlateau);
                    gtk_box_pack_start( GTK_BOX( pHBoxLignePlateau[y] ), plateau[x][y].widget, FALSE, FALSE, 0);


            }
}
ici, x et y sont de type int, et voici ma fonction "clickCase"

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
void clickCase( GtkWidget* pWidget, gpointer* pData ){
     
     gtk_image_set_from_file(GTK_IMAGE(plateau[pData->posX][pData->posY].image),"images/pion_blanc.png"); //ERREUR ici !
     printf("fonction executee\n");

}
Les erreurs montrées par le compilateur (gcc sous devcpp):
request for member `posX' in something not a structure or union
request for member `posY' in something not a structure or union

g_signal_connect(); ne prend que 4 arguments, dont le dernier est l'argument à passer à la fonction utilisé par le Callback (ici clickCase). Hors j'ai besoin d'en passer plusieurs, par conséquent j'ai crée la structure reversiCase dans laquelle se situe toutes les données que je souhaite passer en argument à clickCase (du moins certains) avec le pointeur pPlateau qui me permet d'avoir accès à tout les champs de la structure (c'est ce pointeur que je souhaite passer en argument à clickCase via le g_signal_connect(); ).

En espèrant etre assez claire, merci d'avance.