J'ai écrit un script, que j'utilise en include, dans lequel j'utilise une fonction enregistrée pour gérer le bouton "Annuler" de ma GUI :
GUIRegisterMsg(0x0111, "BarreAttente_WM_COMMAND")
Sans entrer dans le détail, je suis obligé d'en passer par là au lieu d'un simple GUIGetMsg() mais là n'est pas le souci.
Cette fonction fonctionne très bien et intercepte l'utilisation du bouton "Annuler" par son identifiant, son controlID.
Le code suivant l'utilisation de ce bouton affiche une table en utilisant _ArrayDisplay(). Cela fonctionnait aussi jusqu'au jour où la table ne s'est pas affichée


Le controlID de mon bouton "Annuler" est récupéré par _ArrayDisplay() à son exécution via GUIGetMsg() dans sa boucle de gestion des événements "While 1 ... Wend" et correspond au controlID de son bouton "Exit" ! D'où l'absence d'affichage.
Je ne comprends pas bien pourquoi.

Toujours est-il que ce n'est pas un bug de ma part. C'est une situation certes pas fréquente mais possible, la preuve.
Pour éviter ce problème il faut tester l'handle de la fenêtre ayant émise l'événement dans _ArrayDisplay(). C'est si peu fréquent que les codeurs ont simplement utilisé, comme je le fais aussi systématiquement :
Code : Tout sélectionner
$iMsg = GUIGetMsg()
Code : Tout sélectionner
Local $aMsg = GUIGetMsg(1)
$iMsg = $aMsg[0]
If $iMsg > 0 And $aMsg[1] <> $hGUI Then $iMsg = 0
D'où ma 2ème question :
