Funktionreferenz


GUIGetMsg

Beschreibung anzeigen in

Fragt die GUI nach aufgetretenen Ereignissen (events) ab.

GUIGetMsg ( [advanced = 0] )

Parameter

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.

Rückgabewert

Gibt je nach "advanced"-Parameter ein Ereignis oder ein Array zurück.

Das zurückgegebene "Ereignis" ist die Control-ID des Controls, das die Nachricht sendet, oder es ist ein spezielles Ereignis (wie das Schließen oder Minimieren eines Fensters). Wenn keine Nachricht vorhanden ist, wird 0 als Ereignis zurückgegeben.

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.

Die Konstanten sind in GUIConstantsEx.au3 definiert.

Wird der "advanced"-Parameter verwendet, werden die Informationen in einem Array zurückgegeben:

$aArray[0] = 0 oder Ereignis-ID oder Control-ID
$aArray[1] = Der Fenster-Handle des Fensters, von dem das Ereignis gemeldet wird
$aArray[2] = Der Control-Handle des Controls, von dem das Ereignis gemeldet wird (gegebenenfalls)
$aArray[3] = Die aktuelle X-Position des Mauszeigers (relativ zum GUI-Fenster)
$aArray[4] = Die aktuelle Y-Position des Mauszeigers (relativ zum GUI-Fenster)

Wenn die GUIOnEventMode-Option auf 1 gesetzt ist, ist der Rückgabewert von GUIGetMsg immer 0, und @error wurde auf 1 gesetzt.

Falls die Option GUIEventOptions auf 1 gesetzt ist, wird der Minimier-, Wiederherstell- und Maximier-Button nichts weiter tun, außer einer einfachen Benachrichtigung.

Bemerkungen

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 - - - - - - - -

Verwandte Funktionen

GUICreate, GUICtrlCreate..., GUICtrlRead, GUICtrlSendMsg, GUICtrlSetOnEvent, GUIEventOptions (Option), GUIGetCursorInfo, GUIOnEventMode (Option)

Beispiel

Beispiel 1

#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

Beispiel 2

#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