Hallo,
ich habe da ein kleines Script geschrieben bei dem ich nicht weiß, ob man das so machen kann.
Zuerst mal eine kleine Beschreibung, was ich will
Ich will in einer GUI ein farbige Fläche erzeugen, in der sich ein andersfarbiger Button befindet.
Es soll aber nur dann etwas geschehen, wenn ich den Button anklicke.
Ich habe also zwei Controls übereinander erstellt, von dem ich aber nur das anklicken des Buttons auswerten will.
Hier mein Script zum testen:
Spoiler anzeigen
#include <ButtonConstants.au3>#include <GUIConstantsEx.au3>#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Opt("MouseCoordMode", 2)
; Die GUI erstellen.
$GUI = GUICreate("Form1", 600, 500, -1, -1)
GUISetBkColor(0x6791C9)
; Ein Label in der GUI erstellen.
$Label1 = GUICtrlCreateLabel("Nur ein Test", 64, 72, 468, 324, BitOR($SS_CENTER, $SS_SUNKEN, $WS_BORDER), $WS_EX_CLIENTEDGE)
GUICtrlSetBkColor($Label1, 0x00FF00)
; Einen Button in dem Label erstellen.
$Button1 = GUICtrlCreateButton("Klick mich.", 176, 176, 209, 81)
GUICtrlSetBkColor($Button1, 0xFF0000)
; Die Position und die Größe des Buttons ermitteln.
$Test = ControlGetPos($GUI, "", $Button1)
; Die GUI anzeigen.
GUISetState(@SW_SHOW, $GUI)
While 1
; Die aktuelle Mausposition ermitteln.
Local $Pos = MouseGetPos()
$Msg = GUIGetMsg()
Switch $Msg
Case $GUI_EVENT_CLOSE
ExitLoop
Case $Label1
; Die aktuelle Mauszeigerposition mit der Position und der Größe des Buttons vergleichen.
If $Pos[0] > $Test[0] And $Pos[0] < ($Test[0] + $Test[2]) And $Pos[1] > $Test[1] And $Pos[1] < ($Test[1] + $Test[3]) Then
MsgBox(0, "", "Treffer !", 1)
Else
MsgBox(0, "", "Daneben !", 1)
EndIf
EndSwitch
WEnd
GUIDelete($GUI)
Exit
Es funktioniert zwar, aber ich bin mir nicht sicher, ob das nicht nur Zufall o.ä. ist.
Kann man das also wirklich so machen, oder gibt es da eventuell noch eine bessere Lösung ?
MfG:
BigRox