Page 1 sur 1

kesako callback...?

Publié : lun. 10/janv./2005 9:32
par Torp
Salut,

Est ce que quelqu'un pourrait donner la définition simple d'un CALLBACK? La doc de PB est assez évasive, et j'ai pas vraiment trouvé d'explication simple dans le forum...

Merci

++
_/Torp\_

Publié : lun. 10/janv./2005 12:42
par nico
Toute création d'une fenêtre window est rattachée à une procédure permettant de traiter les évènements souris , clavier et des gadgets.

Pure simplifie la tâche de l'utilisateur avec ses commandes: event =WaitWindowEvent() , eventGadgetId() etc..; de sorte que l'utilisateur n'a pas à se préoccuper de la forme des messages reçus.

Mais il est souvent utile d'avoir accès directement à cette procédure; ce que permet : SetWindowCallback(@Callback()).

Ensuite avec la nouvelle procédure implantée: Procedure Callback(WindowID, Message, wParam, lParam), on a un accès aux différents messages grâce à ces trois variables: Message, wParam, lParam.

C'est la base de la programmation Window.

Publié : lun. 10/janv./2005 19:44
par KarLKoX
Un Callback est un pointeur sur fonction : cela permet d'assigne une fonction à appeler en paramètre.
Exemple d'utilisation simple : imaginons que tu as une fonction permettant de lire un fichier s'appelant "LitDonne".
A la base ta fonction ne permet de lire que depuis un fichier mais ton projet grandissant, tu aimerais que l'utilisateur puisse lire depuis un flux quelconque (mémoire, réseaux, tube ...) mais ne voulant pas te prendre la tête à le faire tu décides que ce sera au programmeur voulant implémenter cette fonctionnalité de le faire. C'est la que les callbacks peuvent être utile : plutot que d'avoir une fonction figée comme :

Code : Tout sélectionner

Procedure LitDonne(fichier_a_lire.s)

    resultat = OpenFile(fichier_a_lire)
    ; blah ...

EndProcedure
Tu auras :

Code : Tout sélectionner

Procedure LitDonne(*pointeur_fonction_a_appeler.l)

    ; pseudo code     
    CallFunctionFast(*pointeur_fonction_a_appeler, param ...)

EndProcedure
Ici, ta fonction LitDonné appelera le pointeur passé en paramètre : c'est lui qui se chargera de lire le flux qu'il souhaite.
C'est un exemple bidon mais j'espère t'avoir éclairé un peu.

Pour les callbacks concernant windows, c'est un peu plus compliqué à cerner car il faut savoir comment windows gère la pile des messages mais la, c'est un autre débat (qui pourrait t'embrouiller en plus).

Publié : lun. 10/janv./2005 21:30
par Torp
Merci pour vos explications.
J'avoue que ca reste encore un peu flou dans mon esprit, mais comme le dis Nico quand on a pas les bases... :?