Aus Function GuiGetMsg() beeinflussen

  • Spoiler anzeigen
    [autoit]

    Func _Gui

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

    gui....

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

    While 1
    $nMsg = GuiGetMsg()
    Switch $nMsg
    Case 1
    MsgBox(0,"","tadaa")
    Case 2
    _Func2()
    EndSwitch
    WEnd

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

    EndFunc ;==>_Gui

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

    Func _Func2()

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

    do something
    Return(1)
    EndFunc

    [/autoit]


    Sers
    Der code oben stellt verkleinert das da was ich möchte.
    Ich rufe per button die Func2 auf welche etwas macht und dann in Case 1 reingehen soll.
    Allerdings weiß ich nicht wie ich GuiGetMsg() das mitteilen kann bzw dem Switch.

    Einer ne idee?

    Einmal editiert, zuletzt von crdy (10. Januar 2013 um 14:39)

  • das teilste gar nich GUIGetMsg() mit...
    da erstellste dir ne Function und die rufst du einmal aus Case 1 und einma aus _Func2 auf....

    andernfalls speicherst du den Rückgabewert von _Func2 in $nMsg und überspringst in der nächsten Runde GUIGetMsg()... das kannste machen wenn du dir nen Flag oder sowas setzt

    Spoiler anzeigen
    [autoit]

    Func _Gui

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

    ;gui....

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

    $bNoGetMsg = False
    $nMsg
    While 1
    If Not $bNoGetMsg Then
    $nMsg = GuiGetMsg()
    Else
    $bNoGetMsg = False
    EndIf

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

    Switch $nMsg
    Case 1
    MsgBox(0,"","tadaa")
    Case 2
    $nMsg = _Func2()
    $bNoGetMsg = True
    EndSwitch
    WEnd

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

    EndFunc ;==>_Gui

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

    Func _Func2()
    ;do something
    Return(1)
    EndFunc

    [/autoit]

    2 Mal editiert, zuletzt von Karill Endusa (10. Januar 2013 um 14:03)

  • Du hast vom Prinzip her natürlich Recht.

    Dennoch glaube ich nicht das mich das zur Lösung bringt.

    ich hole mal etwas weiter aus.

    Ich habe eine Main Gui in der ich unteranderem mehrere Tabs habe in denen Listviews enthalten sind. Ich habe es hinbekommen via switch case das wen ich die Tabs aufrufe immer die alte Listview destroyed wird und neu aufgebaut wird quasi "Aktualisiert"

    Weiterhin kann ich wenn ich eine Zeile auswähle diese in einer neuen Gui Editieren und zurückschreiben. Sobald sich die neue Gui schließt möchte ich das es sich verhält als ob ich den tab gewechselt habe. Quasi Darum die Frage ob ich GuiGetMsg() etwas mitteilen kann.

    :wacko:

    Ist das nachvollziehbar was ich machen will?

    Edit*
    Flag setzen... super idee :) ich setz mich mal dran und melde dann ob ich geschaft habe.
    Danke.

    Edit**
    Mit nem Flag funktioniert es. Super vielen Dank :)

    Einmal editiert, zuletzt von crdy (10. Januar 2013 um 14:39) aus folgendem Grund: ich war zu lansgam edit2: hat geklapt

  • Du scheinst nach ContinueCase zu suchen:

    Spoiler anzeigen
    [autoit]

    ;### Tidy Error: Func statement without parentheses ().
    Func _Gui

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

    gui....

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case 2
    _Func2()
    ContinueCase
    Case 1
    MsgBox(0, "", "tadaa")
    EndSwitch
    WEnd
    EndFunc ;==>

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

    Func _Func2()

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

    Do something
    Return (1)
    EndFunc

    [/autoit]

    mfg autoBert

  • Alternativ kannst du auch ein Dummy-Control mit dem Befehl GUICtrlCreateDummy() erstellen. Dieses kannst du dann per GUICtrlSendToDummy() ansteuern - daraufhin kannst du mit GUIGetMsg() auf den Dummy reagieren.

    Spoiler anzeigen
    [autoit]

    GUICreate('', 240)
    $cButton_Top = GUICtrlCreateButton('Button Top', 20, 20, 200, 20)
    $cButton_Bottom = GUICtrlCreateButton('Button Bottom', 20, 360, 200, 20)
    $cDummy = GUICtrlCreateDummy()
    GUISetState()

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

    While Sleep(10)
    Switch GUIGetMsg()
    Case -3
    Exit
    Case $cButton_Top, $cDummy
    MsgBox(0, '', 'tadaaa')
    Case $cButton_Bottom
    MsgBox(0, '', 'lalala')
    GUICtrlSendToDummy($cDummy)
    EndSwitch
    WEnd

    [/autoit]

    LG