[edit par croisement de posts]
AdlibEnable ne doit pas être prise dans un while, puisque son but est de lancer cycliquement une fonction sans avoir à passer par une boucle
[ fin edit]
ok, pour le mode evenementiel , voici un copier coller du code d fichier d'aide pour analyse :
► Afficher le texte
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
Opt("GUIOnEventMode", 1) ; Change to OnEvent mode
$mainwindow = GUICreate("Hello World", 200, 100)
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
GUICtrlCreateLabel("Hello world! How are you?", 30, 10)
$okbutton = GUICtrlCreateButton("OK", 70, 50, 60)
GUICtrlSetOnEvent($okbutton, "OKButton")
GUISetState(@SW_SHOW)
While 1
Sleep(1000) ; Idle around
WEnd
Func OKButton()
;Note: at this point @GUI_CTRLID would equal $okbutton,
;and @GUI_WINHANDLE would equal $mainwindow
MsgBox(0, "GUI Event", "You pressed OK!")
EndFunc
Func CLOSEClicked()
;Note: at this point @GUI_CTRLID would equal $GUI_EVENT_CLOSE,
;and @GUI_WINHANDLE would equal $mainwindow
MsgBox(0, "GUI Event", "You clicked CLOSE! Exiting...")
Exit
EndFunc
la philosophie est de remplacer le gros while 1 ... wend contenant l'ensemble des tests : si controle pressé est bouton1 alors faire ça, si bouton 2 faire ça, etc . par un
mais en contre partie, il faut enregistrer des callback (fonction) à chaque controle de la fenêtre pour que le script sache quoi exécuter lors de l'appui dessus
pour enregistrer ces fonction nous avons 2 "enregistreurs" :
GUISetOnEvent pour les boutons (maintenant on va plutôt parler d'évènement) de la fenêtre principal (croix de fermetre, agrnadissement, réduction ....)
et
GUICtrlSetOnEvent qui va gérer les contrôle de notre programme à proprement parlé (nos boutons, combobox, listview, etc)
ainsi dans l'exple de l'aide :
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked") indique qu'à la croix ($GUI_EVENT_CLOSE , là faut lire l'aide pour les correspondence) on associe la fonction CLOSEClicked écrite plus bas dans le code
de même après on a :
GUICtrlSetOnEvent($okbutton, "OKButton")
qui associe au bouton créé une ligne plus haut "$okbutton" la fonction OKBOUTON écrite de même dans le code.
donc dans votre code, il faudrait associer à chacun de vos contrôle, la fonction lancée lorsque vous cliquez dessus