[GTK] Probleme passage structure en argument signal

Probleme passage structure en argument signal [GTK] - C - Programmation

Marsh Posté le 29-11-2007 à 17:09:38    

Bonjour,
 
Voila j'ai un soucis avec un morceau de code et je n'arrives pas a comprendre pourquoi cela ne fonctionne pas.
 
J'ai cette structure :
 

Code :
  1. typedef struct
  2. {
  3.     gint posx;
  4.     gint posy;
  5.     gint couleur;
  6.     GtkWidget *eventbox;
  7.     GtkWidget *label;
  8. }jeton;


Définit en global :

Code :
  1. jeton ot[8][8];


 
et Celle ci :  

Code :
  1. typedef struct
  2. {
  3.     gint x;
  4.     gint y;
  5. }coord;


Définit en local dans le main :

Code :
  1. coord poscoup;


 
 
Le g_signal_connect suivant :

Code :
  1. for(i=0;i<8;i++)
  2.         for(j=0;j<8;j++)
  3.         {
  4.             poscoup.x=i;
  5.             poscoup.y=j;
  6.          g_signal_connect(G_OBJECT(ot[i][j].eventbox), "button_press_event", G_CALLBACK(coup), &poscoup);
  7.         }


et la fonction suivante :
 

Code :
  1. void coup(GtkWidget *eventbox,gpointer poscoup)
  2. {
  3.     coord *pos=(coord*)poscoup;
  4.     gtk_label_set_label(ot[pos->x][pos->y].label,"P" );
  5. }


 
 
 
 
Ca compile mais des que j'active le signal en cliquant sur une des event box, le programme plante.
Quelqu'un pourrait il m'expliquer ce qui ne va pas? :(
 
En vous remerciant d'avance pour vos réponses,
 
Galaxed.


Message édité par galaxed le 29-11-2007 à 17:15:00
Reply

Marsh Posté le 29-11-2007 à 17:09:38   

Reply

Marsh Posté le 29-11-2007 à 17:42:18    

parce que tu passes en param l'adresse d'un truc local. Donc passe un pointeur sur un truc dont la durée de vie est supérieur: alloc dynamique ou globale/statique

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed