wie tray menü und gui gleichzeitig in einer Schleife?

  • Ich habe wieder eine DAU Frage... ;( Ich habe eine GUI und ein Tray menue. Ich möchte natürlich, dass Gui und tray Menue gleichzeitig Befehle entgegen nimmt, allerdings weiß ich nicht wie ich die Schleife unter einem Hut bekomme.

    Mit zwei While Schleifen ignoriert er logischerweise immer eine...

    Spoiler anzeigen

    #include <GUIConstantsEx.au3>

    Opt("TrayMenuMode",1) ; Default tray menu items (Script Paused/Exit) will not be shown.

    $settingsitem = TrayCreateMenu("Settings")
    $displayitem = TrayCreateItem("Display", $settingsitem)
    $printeritem = TrayCreateItem("Printer", $settingsitem)
    TrayCreateItem("")
    $aboutitem = TrayCreateItem("About")
    TrayCreateItem("")
    $exititem = TrayCreateItem("Exit")

    TraySetState()

    #Region ### START Koda GUI section ### Form=
    $Form3 = GUICreate("Form3", 413, 305, 246, 181)
    $Button1 = GUICtrlCreateButton("Button1", 40, 40, 321, 209, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

    EndSwitch
    WEnd


    While 1
    $msg = TrayGetMsg()
    Select
    Case $msg = 0
    ContinueLoop
    Case $msg = $aboutitem
    Msgbox(64,"About:","AutoIt3-Tray-sample")
    Case $msg = $exititem
    ExitLoop
    EndSelect
    WEnd

    Exit

    Meine Versuch die beiden Schleifen in eine gemeinsame zu setzen endete immer im Chaos. :S

    hat jemand einen Schlag auf den Hinterkopf für mich parat?

    Danke

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---

    Einmal editiert, zuletzt von franzp (3. September 2008 um 17:01)

  • Einfach alles in eine Schleife.

    [autoit][/autoit]
    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>

    Opt("TrayMenuMode",1) ; Default tray menu items (Script Paused/Exit) will not be shown.

    $settingsitem = TrayCreateMenu("Settings")
    $displayitem = TrayCreateItem("Display", $settingsitem)
    $printeritem = TrayCreateItem("Printer", $settingsitem)
    TrayCreateItem("")
    $aboutitem = TrayCreateItem("About")
    TrayCreateItem("")
    $exititem = TrayCreateItem("Exit")

    TraySetState()

    #Region ### START Koda GUI section ### Form=
    $Form3 = GUICreate("Form3", 413, 305, 246, 181)
    $Button1 = GUICtrlCreateButton("Button1", 40, 40, 321, 209, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    While 1
    $nMsg = GUIGetMsg()
    $msg = TrayGetMsg()

    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch

    Select
    Case $msg = 0
    ContinueLoop
    Case $msg = $aboutitem
    Msgbox(64,"about:","AutoIt3-Tray-sample")
    Case $msg = $exititem
    ExitLoop
    EndSelect
    WEnd

    [/autoit]
    [autoit][/autoit]
  • weiß nicht in wie fern ich alleine da stehe, aber ich finde es mit den schleifen sehr unübersichtlich.
    kannst ja mal den OnEventMode probieren (GuiOnEvent, TrayOnEvent) ... da erstellste funktionen für
    jede aufgabe..

    finde ich pers. einfacher und übersichtlicher. zumal man damit auch keine fehler bei evtl. auftretenden
    Problemen in der schleife erhält.

  • sc4ry ja mag sein, aber dazu müsste ich das gesamte Programm umwerfen und das ist mir jetzt doch zu aufwendig. Aber das wäre eine alternative gewesen..

    funkey kann es sein, dass ich in der While Schleife zuerst Switch.... EndSwitch und dann erst Select .... Endselect setzen muß? Andersrum macht er es komischerweise nicht? Aber warum? Das versteh ich gerade nicht. Wenn ich es verdreh funktionieren die GUI funktionen nicht mehr nur noch tray..

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---

  • ich komm einfach nicht drauf... habe jetzt erst Switch und dann Select. Damit funktioniert´s!
    Aber keine Ahnung warum es andersrum nicht geht. Und alles auf select ging auch nicht... ?(

    Egal.. Danke trotzdem.

    Franz

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---

  • oder so ist es am einfachsten:

    Spoiler anzeigen
    [autoit]


    While 1
    $MSG = GUIGetMsg()
    $TRAY = TrayGetMsg()
    Select
    Case $MSG = $START
    ;code
    Case $MSG = $GUI_EVENT_CLOSE
    Exit
    Case $TRAY = $EXITITEM
    Exit
    Case $TRAY = $SHOW
    GUISetState(@SW_SHOW, $MANAGE)
    Case $TRAY = $HIDE
    GUISetState(@SW_HIDE, $MANAGE)
    EndSelect
    WEnd

    [/autoit]