J'ajoute aux très bons conseils de Marc (56) que les "binds"* préparent un terrain automatique. Et que les fonctions
WindowEvent() et
WaitWindowEvent() exécutent l'automate interne préparé avec les "binds"*
*: ce que j'appelle les "binds", ce sont les instructions
BindEvent(),
BindGadgetEvent(),
UnbindEvent() et
UnbindGadgetEvent(), etc...
Aussi, pour faire rager
marc56, le rendre jaloux, attiser son bellicisme et... Bon j'arrête de raconter des grosses bêtises, et, meilleurs voeux à marc56.
Donc pour perfectionner son explication :
- méthode 1 : tout le traitement des évènements passe par la valeur de retour de
WindowEvent().
Code : Tout sélectionner
Repeat
x = WindowEvent()
If x = #codeEvenementDansLAide
etc...
EndIf
Until x = codePourQuitterIdemDansLAideWindowEvent
Les conditions sont explicites.
- méthode 2 : les evénèments traités s'apparentent à des objets que l'on active et règle (BindSuffixe() ), ou désactive (UnbindSuffixe() ) et les conditions sont implicites. La boucle principale est toujours la même, sans trop se soucier de la valeur de retour de
WindowEvent() (ou WaitSuffixe() ).
Code : Tout sélectionner
Repeat
WaitWindowEvent()
ForEver ; penser à "binder" préalablement un évènement de fin
Les deux méthodes ne sont pas exclusives : on peut mixer un traitement semi-automatique avec des "binds" tout en testant la valeur de retour avec
If,
Select,
Until, etc... L'essentiel est de ne pas faire de doublons, en "bindant" un évènement tout en vérifiant la présence de cet évènement dans la valeur de retour de
WindowEvent(). De tels doublons, c'est faisable, mais ça fait un code particulièrement et inutilement compliqué à comprendre. Donc le mix c'est bien mais chaque évènement doit être soit "bindé" soit traité explicitement avec les
If, etc...