Fragt die GUI nach aufgetretenen Ereignissen (events) ab.
GUIGetMsg ( [advanced = 0] )
advanced | [optional] gibt evtl. zusätzliche Informationen in einem Array zurück. $GUI_EVENT_SINGLE (0) = (Standard) Gibt nur das Ereignis selbst zurück. $GUI_EVENT_ARRAY (1) = Gibt ein Array zurück, in dem das Ereignis und zusätzliche Informationen enthalten sind. Die Konstanten sind in GUIConstantsEx.au3 definiert. |
Spezial ID: | Bemerkungen |
$GUI_EVENT_NONE (0): | Kein Ereignis |
$GUI_EVENT_CLOSE: | die Dialogbox wird geschlossen (entweder durch einen bestimmten Button oder das Systemmenü). |
$GUI_EVENT_MINIMIZE: | die Dialogbox wird per Button in der Titelleiste minimiert. |
$GUI_EVENT_RESTORE: | die Dialogbox wird durch Klick auf das Taskleistensymbol wiederhergestellt. |
$GUI_EVENT_MAXIMIZE: | die Dialogbox wird per Button in der Titelleiste maximiert. |
$GUI_EVENT_MOUSEMOVE: | der Mauszeiger wurde bewegt |
$GUI_EVENT_PRIMARYDOWN: | die erste (linke) Maustaste wurde gedrückt |
$GUI_EVENT_PRIMARYUP: | die erste (linke) Maustaste wurde losgelassen |
$GUI_EVENT_SECONDARYDOWN: | die zweite (rechte) Maustaste wurde gedrückt |
$GUI_EVENT_SECONDARYUP: | die zweite (rechte) Maustaste wurde losgelassen |
$GUI_EVENT_RESIZED: | Dialogbox wurde neu aufgebaut. |
$GUI_EVENT_DROPPED: | Ende der Drag&Drop Aktion @GUI_DragId, @GUI_DragFile und @GUI_DropId werden verwendet, um die ID's bzw. Dateien der jeweiligen Controls zu ermitteln. |
Diese Funktion gibt die CPU automatisch wieder frei, wenn es erforderlich ist, so dass sie ruhig in Dauerschleifen benutzt werden kann, ohne die CPU vollständig auszulasten.
Informationen über die Mausposition und das Überfahren von Controls kann mit GUIGetCursorInfo() ermittelt werden. Befindet sich die Maus über einem Control, wird kein Ereignis ausgelöst. Deshalb muss GUIGetCursorInfo() eingesetzt werden, um die Control-ID zu erhalten.
- - - - - - - - Erklärung der Controls - - - - - - - -
GUICreate, GUICtrlCreate..., GUICtrlRead, GUICtrlSendMsg, GUICtrlSetOnEvent, GUIEventOptions (Option), GUIGetCursorInfo, GUIOnEventMode (Option)
#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>
Example()
; Drücke den Button, um die Werte der Checkboxen anzuzeigen
; Das Skript ermittelt auch Statusänderungen (geschlossen/minimiert/Timeouts, etc).
Func Example()
Opt("GUICoordMode", 1)
GUICreate("Radio Box Demo", 400, 280)
; Erzeugt die Controls
Local $idButton_1 = GUICtrlCreateButton("B&utton 1", 30, 20, 120, 40)
GUICtrlCreateGroup("Gruppe 1", 30, 90, 165, 160)
GUIStartGroup()
Local $idRadio_1 = GUICtrlCreateRadio("Radiobutton &0", 50, 120, 80, 20)
GUICtrlCreateRadio("Radiobutton &1", 50, 150, 80, 20)
Local $idRadio_3 = GUICtrlCreateRadio("Radiobutton &2", 50, 180, 80, 20)
; Initialisierung der Variablen um GUI-Ereignisse im Auge zu behalten
Local $iRadioVal1 = 0 ; Annahme: erster Radiobutton ausgewählt = 0, letzter Button = 2
; GUI anzeigen
GUISetState(@SW_SHOW)
Local $idMsg = 0
; In dieser Nachrichtenschleife werden Variablen benutzt, um die Radiobuttons im Auge zu behalten, ein anderer
; Weg wäre der Gebrauch von GUICtrlRead() am Ende um den Status jedes Controls einzulesen
While 1
$idMsg = GUIGetMsg()
Select
Case $idMsg = $GUI_EVENT_CLOSE
MsgBox($MB_SYSTEMMODAL, "", "Dialog wurde beendet")
Exit
Case $idMsg = $GUI_EVENT_MINIMIZE
MsgBox($MB_SYSTEMMODAL, "", "Dialog wurde minimiert", 2)
Case $idMsg = $GUI_EVENT_RESTORE
MsgBox($MB_SYSTEMMODAL, "", "Dialog wurde wiederhergestellt", 2)
Case $idMsg = $idButton_1
MsgBox($MB_SYSTEMMODAL, "Standard-Button gedrückt", "Radiobutton " & $iRadioVal1)
Case $idMsg >= $idRadio_1 And $idMsg <= $idRadio_3
$iRadioVal1 = $idMsg - $idRadio_1
EndSelect
WEnd
GUIDelete()
EndFunc ;==>Example
#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>
Example()
Func Example()
; Erstellt eine GUI.
Local $hGUI1 = GUICreate("Beispiel GUI1")
; Erstellt einen Button.
Local $idButton1 = GUICtrlCreateButton("Button1", 10, 10, 80, 22)
; Zeigt die GUI an
GUISetState(@SW_SHOW, $hGUI1)
; Erstellt eine GUI.
Local $hGUI2 = GUICreate("Beispiel GUI2", 300, 300)
; Erstellt einen Button.
Local $idButton2 = GUICtrlCreateButton("Button2", 10, 10, 80, 22)
; Zeigt die GUI an
GUISetState(@SW_SHOW, $hGUI2)
; Initialisiert eine Lokale Variable.
Local $aMsg = 0
While 1
; Weist $aMsg die erweiterten GUI Nachrichten zu.
$aMsg = GUIGetMsg($GUI_EVENT_ARRAY)
; Schaltet zwischen den GUIs um
Switch $aMsg[1]
Case $hGUI1
; Das Ereignis kommt von GUI1
; Schaltet zwischen den Ereignis-ID um
Switch $aMsg[0]
Case $GUI_EVENT_CLOSE
ExitLoop
Case $idButton1
MsgBox($MB_SYSTEMMODAL, "", "Button1 angeklickt.")
EndSwitch
Case $hGUI2
; Das Ereignis kommt von GUI2
; Schaltet zwischen den Ereignis-ID um
Switch $aMsg[0]
Case $GUI_EVENT_CLOSE
GUIDelete($hGUI2)
Case $idButton2
MsgBox($MB_SYSTEMMODAL, "", "Button2 angeklickt.")
EndSwitch
EndSwitch
WEnd
; Löscht die vorherigen GUIs und alle Steuerelemente.
GUIDelete($hGUI1)
EndFunc ;==>Example