Subsections

Mécanismes de communication entre les widgets et l'application

Fonction de rappel

Les fonctions de rappel doivent être enregistrées auprès d'un ou plusieurs widgets.
Exemple :

/*fonction de rappel*/
void CbOK (widget w, void *data) /* void *data est une donnée opaque*/
{
	printf("fonction de rappel:%s", (char *)data);
}
/* programme principal */
main ()
{...
/* Création du widget et son association à sa callback */
ok=CreateButton(...);
RegisterCallBack (ok,CbOK,"coucou"); /* coucou est une donnée opaque */
....
/* Boucle de traitement des évènements */
Mainloop();
}

On peut avoir plusieurs fonction pour 1 widget ou plusieurs widgets pour une fonction.

Les avantages des fonctions de rappel sont la généricité et la simplicité. Les inconvénients sont un code morcelé, une maintenance difficile et l'utilisation de la donnée opaque qui est source d'erreur (de type).



Watier Yves 2004-11-28