Quoi que tu fasses, le résultat de ton code n'apparaîtra qu'après le temps nécessaire à son exécution. (Je sais c'est une évidence

)
Donc, si j'ai bien compris, ton but est de faire autant de fois l'action qu'il y a eu de clics sur le bouton.
Si c'est bien cela, et que tu travailles avec
GUIGetMsg(), le code que j'ai posté le fait. Inutile de capter un double-clic pour lequel tu n'as aucune action spécifique à exécuter. Si tu n'utilises pas
GUIRegisterMsg(), les double-clics ne seront pas interprétés comme tels.
Dans le code précédent, remplace
Code : Tout sélectionner
Func ButtonHideEvent()
Static $ButtonHideEvent = 0
Static $iTimer = TimerInit()
par
Code : Tout sélectionner
Func ButtonHideEvent()
Static $ButtonHideEvent = 0
Static $iTimer = TimerInit()
static $iNbClic = 0
$iNbClic += 1
Sleep(500)
et tous les
par
Code : Tout sélectionner
ConsoleWrite("Clic n° " & $iNbClic & " : $ButtonHideEvent = ...)
Ensuite test en comptant le nombre de clics que tu fais et tu les verras apparaître à leur heure dans la console, et avec leurs effets dans la GUI.
C'est sûr que s'il faut 0,5 s. pour exécuter un code, son effet ne pourra pas se voir avant ce délai (Je sais c'est une évidence

)
Ceci dit ton code fonctionne aussi

, je l'ai testé. Il peut cependant être source de problème parce que le code exécuté lors du clic se déroule pendant l'exécution de la fonction définie dans
GUIRegisterMsg() 
.
Il faudrait juste le modifier comme proposer à la fin de cette magnifique traduction

du
tutoriel de GUIRegisterMsg. Il y a encore d'autres façons d'exécuter ce code en dehors de
GUIRegisterMsg.
Perso, si tu travailles avec
GUIGetMsg(), je ne vois pas l'intérêt de se compliquer la vie en ajoutant une fonction pour
GUIRegisterMsg() 
mais bon, peut être que d'autres personnes y trouveront une raison valable.