Funktionsreferenz


GUIGetMsg

Fragt die GUI nach aufgetretenen Ereignissen (events) ab.

GUIGetMsg ( [advanced] )

Parameter

advanced [optional] gibt evtl. zusätzliche Informationen in einem Array zurück.
0 = (Standard) Gibt nur das Ereignis selbst zurück.
1 = Gibt ein Array zurück, in dem das Ereignis und zusätzliche Informationen enthalten sind.

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
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.
Wird der "advanced"-Parameter verwendet, werden die Informationen in einem Array zurückgegeben:
$array[0] = 0 oder Ereignis-ID oder Control-ID
$array[1] = Der Fenster-Handle des Fensters, von dem das Ereignis gemeldet wird
$array[2] = Der Control-Handle des Controls, von dem das Ereignis gemeldet wird (gegebenenfalls)
$array[3] = Die aktuelle X-Position des Mauszeigers (relativ zum GUI-Fenster)
$array[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, GUIOnEventMode (Option), GUIEventOptions (Option), GUIGetCursorInfo, GUICtrlSendMsg, GUICtrlSetOnEvent

Beispiel


#include <GUIConstantsEx.au3>

Example()

;-------------------------------------------------------------------------------------
; Beispiel - Drücke den Button, um die Werte der Checkboxen anzuzeigen
; Das Skript ermittelt auch Statusänderungen (geschlossen/minimiert/Timeouts, etc).
Func Example()
    Local $button_1, $radio_1, $radio_3
    Local $radioval1, $msg

    Opt("GUICoordMode", 1)
    GUICreate("Radio Box Demo", 400, 280)

    ; Erzeugt die Controls
    $button_1 = GUICtrlCreateButton("B&utton 1", 30, 20, 120, 40)
    GUICtrlCreateGroup("Gruppe 1", 30, 90, 165, 160)
    GUIStartGroup()
    $radio_1 = GUICtrlCreateRadio("Radiobutton &0", 50, 120, 80, 20)
    GUICtrlCreateRadio("Radiobutton &1", 50, 150, 80, 20)
    $radio_3 = GUICtrlCreateRadio("Radiobutton &2", 50, 180, 80, 20)

    ; Initialisierung der Variablen um GUI-Ereignisse im Auge zu behalten
    $radioval1 = 0 ; Annahme: erster Radiobutton ausgewählt = 0, letzter Button = 2

    ; GUI anzeigen
    GUISetState()

    ; 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
        $msg = GUIGetMsg()
        Select
            Case $msg = $GUI_EVENT_CLOSE
                MsgBox(0, "", "Dialog wurde beendet")
                Exit
            Case $msg = $GUI_EVENT_MINIMIZE
                MsgBox(0, "", "Dialog wurde minimiert", 2)
            Case $msg = $GUI_EVENT_MAXIMIZE
                MsgBox(0, "", "Dialog wurde wiederhergestellt", 2)

            Case $msg = $button_1
                MsgBox(0, "Standard-Button gedrückt", "Radiobutton " & $radioval1)

            Case $msg >= $radio_1 And $msg <= $radio_3
                $radioval1 = $msg - $radio_1

        EndSelect
    WEnd
EndFunc   ;==>Example