GUIOnEventMode mit unterschiedlichen Fenstern

  • Hallo,
    nachdem die Suche leider nichts schlüssiges erbracht hat, hier meine Frage:

    Ich erstelle einige unterschiedliche Fenster, stelle alle bis auf das Hauptfenster dabei auf Hide.
    z.B.

    [autoit]

    GUISetState(@SW_HIDE,$SETTINGS_FORM)

    [/autoit]

    Direkt nach den includes hab ich GUIOnEventMode auf 1 gestellt.

    [autoit]

    Opt("GUIOnEventMode",1)

    [/autoit]

    Bei GUICreate schreibe ich:

    [autoit]

    GUISetOnEvent($GUI_EVENT_CLOSE, "EndTool",$SETTINGS_FORM)

    [/autoit]

    Bei den Buttons:

    [autoit]

    GUICtrlSetOnEvent($BTN_SAVE, "WriteSettings")

    [/autoit]

    Das ganze funktioniert zunächst wie gewünscht.
    Rufe ich nun aber eine Funktion mit einer Schleife auf, komme ich aus dieser nicht wieder raus ehe diese zu Ende ist.
    Was ja der Sinn war wieso ich GUIOnEventMode verwende.

    Auf den Abbrechen Button habe ich mit GUICtrlSetOnEvent eine Funktion gelegt, in dieser stelle ich eine Variable auf True und prüfe innerhalb der Schleife ob diese True ist, wenn ja dann Exitloop.
    Geht leider nicht.

    Habe zusätzlich nun eine Messagebox in die Abbrechen Funktion geschrieben, Ergebnis:
    Die Funktion wird ausgeführt, wenn die Schleife beendet ist.
    Egal ob ich die Schleife nun als while, for oder do schreibe...das Ergebnis ist immer wieder, erst nach Ablauf der Schleife wird die Abbrechen Funktion ausgeführt.

    Hab dann noch Switch probiert, weil ich dachte das Fenster wäre nicht aktiv.
    Was denke ich aber Quatsch ist, da ich das ja aktiviert habe und gerade benutze:

    [autoit]

    GUISwitch($SETTINGS_FORM)
    GUISetState()

    [/autoit]

    Das Beispiel aus der Hilfe funktioniert allerdings einwandfrei, nur nicht in meinem Script.
    Gibt es da ein Problem mit unterschiedlichen Fenstern oder hat einer eine Idee voran es liegen könnte ?

    Nutze derzeit eine Checkbox zum abbrechen und prüfe innerhalb der Funktion ob diese Checked ist oder nicht.
    Funktioniert, aber möchte doch gerne wissen was ich falsch gemacht habe.

    Danke!

    Einmal editiert, zuletzt von JaneDoe (17. November 2012 um 19:09) aus folgendem Grund: Danke an PenGuin :O

  • Warum auch immer es nicht einfach so schon wie im Beispiel geht, damit geht es nun wie gewünscht:

    [autoit]

    $Button = GUICtrlCreateButton("Exit", 75, 25, 50, 50)
    GUISetOnEvent(-3, "_Exit")

    [/autoit][autoit][/autoit][autoit]

    GUIRegisterMsg(0x0111, "WM_COMMAND") ;WM_COMMAND
    Func _Exit()
    AdlibUnRegister("_Exit")
    ConsoleWrite("Beenden..." & @CRLF)
    Exit
    EndFunc
    Func WM_COMMAND($hWnd, $nMsg, $wParam, $lParam)
    Local $hButton = GUICtrlGetHandle($Button)
    If $lParam = $hButton Then AdlibRegister("_Exit")
    EndFunc ;==>WM_COMMAND

    [/autoit]