Fonction callback avec arguments ?
Bonjour,
J'aimerais savoir comment passer plusieurs arguments à une fonction callback (servant par exemple au clic sur un bouton).
J'ai essayé ça :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
void clic_bouton(GtkWidget* pBouton,gpointer date,int test)
{
printf("%d\n",test);
}
/*....*/
int main(int argc,char *argv[])
{
/*....*/
g_signal_connect(G_OBJECT(pBouton),"clicked",G_CALLBACK(clic_bouton),NULL,5);
return 0;
} |
Mais c'est pas ça.. :(
Merci pour votre aide
Sorry
Edit : pour être plus précis, j'aimerais que lors du clic sur le bouton, le contenu de deux zones de saisie soit récuperer..il faudrait donc que ma fonction clic_bouton reçoive les 2 Widget zone de saisie en paramètres.. :?
Ajout de la rédaction :
Comment passer plusieurs paramètres à une fonction callback ?
Re: [GTK] Fonction callback avec arguments ?
Citation:
Envoyé par sorry60
J'aimerais savoir comment passer plusieurs arguments à une fonction callback (servant par exemple au clic sur un bouton).
Je pense qu'on a déjà expliqué ça.
En général, une fonction callback est munie d'un paramètre 'utilisateur' de type void *. C'est donc une adresse 'anonyme'. celle-ci est transmise, soit au moment de l'appel de la fonction principale, soit lors de la configuration de l'objet.
Il suffit que l'adresse passée soit celle d'une structure, pour 'passer' autant de paramètres que l'on veut...
Code:
1 2 3 4
|
T data;
f (callback, &data); |
avec
Code:
1 2 3 4 5
|
callback(void *p_user)
{
T *p_data = p_user;
} |
Ca peut être aussi l'adresse de début d'une liste chainée, d'un tableau...