Alors voilà, un des problèmes avec lequel j'essaie de vivre depuis des mois: La superposition de deux control les rend inutilisables.
L'action de cliquer sur un bouton est detecté via un GUIGetMsg() des plus basiques. Seulement, il s'avère que si un label est déjà crée derrière le bouton, il est prioritaire. Si on inverse l'ordre de création (d'abord le bouton, ensuite le label), un clic dans la zone du bouton est detecté, mais le bouton n'apparait pas graphiquement lors de la création de la fenêtre (seulement après avoir cliqué dessus).
Voilà un exemple illustrant le PB, sûrement plus clair que ma tentative d'explication;
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
GUICreate("Form1", 200, 120)
$L1 = GUICtrlCreateLabel("L1",0,0,100,100)
GUICtrlSetBkColor(-1,0xAA5500)
$B1 = GUICtrlCreateButton("B1",25,25,50,50)
$B2 = GUICtrlCreateButton("B2",125,25,50,50)
$L2 = GUICtrlCreateLabel("L2",100,0,100,100)
GUICtrlSetBkColor(-1,0x0055AA)
$Display = GUICtrlCreateLabel("",0,100,200,20)
GUICtrlSetBkColor(-1, 0x00AA55)
GUICtrlSetStyle(-1,0x01)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $B1
GuiCtrlSetData( $Display,"B1")
Case $L1
GuiCtrlSetData( $Display,"L1")
Case $B2
GuiCtrlSetData( $Display,"B2")
Case $L2
GuiCtrlSetData( $Display,"L2")
EndSwitch
WEnd
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
GUICreate("Form1", 200, 120)
$L1 = GUICtrlCreateLabel("L1",0,0,100,100)
GUICtrlSetBkColor(-1,0xAA5500)
$B1 = GUICtrlCreateButton("B1",25,25,50,50)
$B2 = GUICtrlCreateButton("B2",125,25,50,50)
$L2 = GUICtrlCreateLabel("L2",100,0,100,100)
GUICtrlSetBkColor(-1,0x0055AA)
$Display = GUICtrlCreateLabel("",0,100,200,20)
GUICtrlSetBkColor(-1, 0x00AA55)
GUICtrlSetStyle(-1,0x01)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $B1
GuiCtrlSetData( $Display,"B1")
Case $L1
GuiCtrlSetData( $Display,"L1")
Case $B2
GuiCtrlSetData( $Display,"B2")
Case $L2
GuiCtrlSetData( $Display,"L2")
EndSwitch
WEnd
Si quelqu'un à une solution contre ça (Une autre manière de determiner un clic sur un bouton ou un trick pour contourner ce glitch), je suis preneur.
Merci d'avance.
PS: Si c'est un sujet déjà traité, je ne l'ai ni trouvé sur le forum ici, ni sur le forum anglais.
EDIT: Sujet résolu, fix:
$Label = GUICtrlCreateLabel("L1",0,0,100,100)
GUICtrlSetBkColor(-1,0xAA5500)
GUICtrlSetState( $Label, $GUI_DISABLE ) ; <--- Cette ligne
$Button = GUICtrlCreateButton("B1",25,25,50,50)
GUICtrlSetBkColor(-1,0xAA5500)
GUICtrlSetState( $Label, $GUI_DISABLE ) ; <--- Cette ligne
$Button = GUICtrlCreateButton("B1",25,25,50,50)