Ich benutze auch meistens den OnEvent Modus.
Den GuiGetMsg Modus nur für ganz kurze Testscripte.
Manchmal kombiniere ich die beiden auch; Beispiel:
Ich habe zwei GUI´s, eins für das Hauptprogramm und das zweite für Einstellungen.
Wenn der User das Einstellungsfenster öffnet, dann wechsle ich von OnEvent zu GetMsg, somit sind alle Buttons des Hauptfensters deaktiviert
Spoiler anzeigen
Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]$hMain = GUICreate("Main", 200, 200, 100, 100)
GUISetOnEvent(-3, "_EXIT")
$hButtonTest = GUICtrlCreateButton("Test", 10, 10)
GUICtrlSetOnEvent(-1, "_Test")
$hButtonConfig = GUICtrlCreateButton("Einstellungen", 10, 50)
GUICtrlSetOnEvent(-1, "_Config")
$hButtonExit = GUICtrlCreateButton("Exit", 10, 90)
GUICtrlSetOnEvent(-1, "_EXIT")
GUISetState()
While 1
Sleep(100)
WEnd
Func _Config()
Opt("GUIOnEventMode", 0)
Local $hGui = GUICreate("Einstellungen", 200, 200, 400, 100)
Local $hButtonTest = GUICtrlCreateButton("Test", 10, 10)
Local $hButtonExit = GUICtrlCreateButton("Schließen", 10, 90)
GUISetState(@SW_SHOW, $hGui)
Local $msg
While 1
$msg = GUIGetMsg()
Switch $msg
Case -3, $hButtonExit
ExitLoop
Case $hButtonTest
ConsoleWrite("Einstellungen - Test" & @CRLF)
EndSwitch
WEnd
GUIDelete($hGui)
Opt("GUIOnEventMode", 1)
EndFunc ;==>_Config
Func _Test()
ConsoleWrite("Test" & @CRLF)
EndFunc ;==>_Test
Func _Exit()
Exit
EndFunc ;==>_EXIT
mfgE