GUIOnEventMode oder GUIGetMsg?

  • GUIOnEventMode oder GUIGetMsg? 25

    1. GUIOnEventMode (13) 52%
    2. GUIGetMsg (9) 36%
    3. Beides (3) 12%
    4. Keines xD (0) 0%

    Wie die Überschrift schon sagt - welches bevorzugt ihr?

    Ich finde GUIOnEventMode viel besser, weil man damit mehr machen kann... Dabei benutze ich es erst seit heute, davor habe ich NUR GUIGetMsg() verwendet. Auch das der EventMode keine Schleife braucht (zumindest nicht für die auszuführenden Events) - bei GUIGetMsg aber immer Case benutzt wird, was ein Switch braucht, und das eine Schleife. Dazu kommt noch das der Code bei dem EventMode viel Übersichtlicher ist. Dennoch wird meiner Meinung nach öfters GUIGetMsg() verwendet - ich mache es ab jetzt mit den guten alten Events...

  • Ich bevorzuge ebenfalls den GUIOnEventMode. Der Code ist übersichtlicher, man braucht keine Schleifen, man kann die Funktionen auch anders nutzen (z.B kann man die Funktion auch mit HotKeySet() aufrufen lassen, geht mit GUIGetMsg zwar auch, aber mit dem OnEventMode find ich es besser) und der EventMode gefällt mir einfach besser, weil es so ist :P

  • Hallo BurakSZ,

    ich bevorzuge zwar den OnEvent-Modus, mache aber kleinere Guis für Optionen auch im GuiGetMsg-Modus, da muss man nur am Anfang dieser Gui

    [autoit]

    Global $b_OldOnEventMode = Opt("GuiOnEventMode", 0)

    [/autoit]

    sich beim umschalten den alten Zustand zwischenspeichern und am Ende diesen wieder herstellen

    [autoit]

    Opt("GuiOnEventMode", $b_OldOnEventMode)

    [/autoit]

    aber eigentlich gehört dieser Thread doch in Off-Topic bzw. Talk, ist zwar AutoIt spezifisch aber keine echte Hilfeanfrage

    mfg (Auto)Bert

    Einmal editiert, zuletzt von AutoBert (15. Juni 2010 um 09:12)

  • Ich nehm immer GuiGetMsg, ausser ich hab keine While schleife laufen (was selten der Fall ist)

    mfg Ubuntu

  • 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
    [autoit]

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

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

    While 1
    Sleep(100)
    WEnd

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

    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

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

    Func _Test()
    ConsoleWrite("Test" & @CRLF)
    EndFunc ;==>_Test

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

    Func _Exit()
    Exit
    EndFunc ;==>_EXIT

    [/autoit]

    mfgE

  • GuiOnEventMode.
    Das macht das ganze Script übersichtlicher.

    Das finden von Rechtschreibfehlern muss sofort und unverzüglich dem Autor gemeldet werden. Das eigennützige Verwenden dieser Rechtschreibfehler ist strengstens untersagt und kann mit Freiheitsenzug bestraft werden.

  • Ich nutze den GuiOnEventMode.
    Die meisten Programme von mir haben eine "grosse" Main-Schleife.

    D.h. in der Schleife werden viele verschiedene Subroutinen und Berechnungsprogramme ausgeführt. Die Schleife selbst wiederholt sich so nur ca. alle 2 Minuten.
    Wenn ich erst alle 2 Minuten auf die Switches reagieren würde, wäre das doof.
    Die einzelnen Subroutinen hingegen sind alle nach wenigen Millisekunden beendet. Dadurch kann ich praktisch in "Echtzeit" auf Events des Benutzers reagieren!