Ein GUI schließen ohne die anderen zus schließen

  • Hallo Com ;D

    Wie der Titel schon aussagt möchte ich gerne wissen wie ich es mache das wenn ich 1 GUI schließe das die anderen offen bleiben.

    Der Code hier geht zwar gut macht auch (fast) das was er soll doch halt nur nicht so wie ich es will.

    So wie er jetzt ist bleiben zwar die fesnter offen wenn ich ein GUI schließe doch danach sind die anderen GUIS nicht mehr benutzbar.

    Wie "fixe" ich das?

    [autoit]

    While 3
    $nMsg = GUIGetMsg(1)
    Switch $nMsg[0]
    Case $GUI_EVENT_CLOSE
    Switch $nMsg[1]
    Case $Form2
    Exit
    Case $Form1
    GUIDelete($Form1)
    EndSwitch
    EndSwitch
    $nMsg = GUIGetMsg(1)
    Switch $nMsg[0]
    Case $Exit
    Switch $nMsg[1]
    Case $Form2
    Exit
    Case $Form1
    GUIDelete($Form1)
    EndSwitch
    Case $Button5
    _credits()

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

    EndSwitch
    WEnd

    [/autoit]


    MfG

    Goldy

    Meine Projekte :

    Taschenrechner [X]
    JamLegend Auto-Player [Canceld]
    Launcher [X]
    Multi-Game-Quest-Viewer [Canceld]


    [autoit]

    If $goffy or not $brain Then $DeleteInetCable

    [/autoit]

    Einmal editiert, zuletzt von Goldy (19. September 2010 um 20:12)

  • Hallo Goldy,

    da du nicht dein komplettes Skript gepostet hast [und ich keine Lust habe die Guis zu deinem (unbrauchbaren) Codeschnipsel zu erstellen] hier ein Beispiel-Skript von mir:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include<WindowsConstants.au3>

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

    Global $idGui1, $idGui2=-99, $idMsgBox, $idZurueck, $idbtnExit2
    _CreateGui2() ;entweder hier oder erst wenn benötigt ($idbtmToGui2 Klick)

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

    $idGui1 = GUICreate('GUI 1', 400, 280, 140, 150, BitOR($WS_MINIMIZEBOX, $WS_MAXIMIZEBOX, $WS_SIZEBOX))
    ;erzeugt eine GUI die zurückgebebene ID wird in der Variablen $idGui1 gespeichert
    ;die GUI hat BOXen für Mininmieren, Maximieren und ist in der Größe frei änderbar
    GUISetOnEvent($GUI_EVENT_CLOSE, '_End')

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

    $idbtnToGui2 = GUICtrlCreateButton('&Aufruf GUI 2', 20, 20, 100, 21)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKRIGHT + $GUI_DOCKTOP)
    ;verankert den Button "Afruf Gui 2" rechts und oben und fixiert die Größe
    ;beim Resizen bleibt es dadurch auf seiner Position am rechten Rand

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

    $idbtnICQ = GUICtrlCreateButton('&ICQ', 20, 50, 100, 21)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKRIGHT + $GUI_DOCKTOP)
    ;verankert den Button "ICQ" rechts und oben und fixiert die Größe
    ;beim Resizen bleibt es dadurch auf seiner Position am rechten Rand

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

    $idbtnExit1 = GUICtrlCreateButton('be&enden', 20, 80, 100, 21)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKRIGHT + $GUI_DOCKTOP)
    ;verankert den Button "Afruf Gui 2" rechts und oben und fixiert die Größe
    ;beim Resizen bleibt es dadurch auf seiner Position am rechten Rand

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

    GUISetState(@SW_SHOW, $idGui1)

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

    While 1
    $nMsg = GUIGetMsg(1) ;extended Modus wichtig!!
    Switch $nMsg[1] ;für welches Fenster ist die Message
    Case $idGui1 ;ab hier ist Gui 1 dran
    Switch $nMsg[0] ;welche Message wurde ausgelöst
    Case $idbtnToGui2
    GUISetState(@SW_DISABLE, $idGui1) ;Gui 1 für disablen
    ;If $idGui2 = -99 Then _CreateGui2() ;nur wenn nicht am Anfang bereits erzeugt nötig, dann auf Vorbelegung der Variable in Global achten)
    GUISetState(@SW_SHOW, $idGui2) ;Gui 2 anzeigen
    Case $idbtnICQ
    MsgBox(0,"","Jetzt würde ICQ gestartet")
    ;Run("C:\Program Files\ICQ7.0\ICQ.exe")
    Case $idbtnExit1, $GUI_EVENT_CLOSE
    _end()
    EndSwitch
    Case $idGui2 ;ab hier ist Gui 2 dran
    Switch $nMsg[0] ;welche Message wurde ausgelöst
    Case $idMsgBox
    MsgBox(0, 'Test', 'Test', 0, $idGui2)
    Case $idZurueck, $GUI_EVENT_CLOSE
    GUISetState(@SW_ENABLE, $idGui1) ;Gui 1 für ensablen
    GUISetState(@SW_HIDE, $idGui2) ;Gui 2 verstecken
    Case $idbtnExit2
    _end()
    EndSwitch
    EndSwitch
    WEnd

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

    Func _CreateGui2()
    $idGui2 = GUICreate('GUI 2', 500, 300, 200, 50, -1, -1, $idGui1)
    ;erzeugt eine GUI als Child von Gui1, die zurückgebebene ID wird in der Variablen $idGui2 gespeichert

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

    $idMsgBox = GUICtrlCreateButton('&MsgBox', 20, 20, 100, 21)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKRIGHT + $GUI_DOCKTOP)
    ;verankert den Button "MsgBox" rechts und oben und fixiert die Größe
    ;beim Resizen bleibt es dadurch auf seiner Position am rechten Rand

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

    $idZurueck = GUICtrlCreateButton('&Zurück zu GUI 1', 20, 50, 100, 21)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKRIGHT + $GUI_DOCKTOP)
    ;verankert den Button "zurück" rechts und oben und fixiert die Größe
    ;beim Resizen bleibt es dadurch auf seiner Position am rechten Rand

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

    $idbtnExit2 = GUICtrlCreateButton('be&enden', 20, 80, 100, 21)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKRIGHT + $GUI_DOCKTOP)
    ;verankert den Button "beenden" rechts und oben und fixiert die Größe
    ;beim Resizen bleibt es dadurch auf seiner Position am rechten Rand
    EndFunc ;==>_CreateGui2

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

    Func _end()
    GUIDelete($idGui2)
    GUIDelete($idGui1)
    Exit
    EndFunc ;==>_end

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

    mfg autoBert

  • Wusste jetzt nicht das dass so wichtig ist xD

    Hier der ganze Code :


    Spoiler anzeigen
    [autoit]

    #NoTrayIcon
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Res_Fileversion=1.0
    #AutoIt3Wrapper_Res_LegalCopyright=© by TheDarkCoderZ
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    ; =======================================================================
    ; MultiGameQuestViewer
    ; Made by TheDarkCoderZ
    ; © 2010
    ; =======================================================================
    ;========================== Includes (Anfang) ===========================
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <StaticConstants.au3>
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <EditConstants.au3>
    #include <ProgressConstants.au3>
    #include <Misc.au3>
    ;=========================== Includes (Ende) =============================
    ;=========================== Global (Anfang) =============================´´
    ;=========================== Global (Ende) ===============================
    $Form2 = GUICreate("Multi-Game-Quest-Viewer by TheDarkCoderZ // Choose your language", 524, 252, 601, 124)
    $GER_FLAG = GUICtrlCreatePic("images\deutsche_flagge.jpg", 16, 96, 233, 137)
    $AMI_ENG_FLAG = GUICtrlCreatePic("images\gbus.gif", 272, 96, 233, 137)
    $Pic3 = GUICtrlCreatePic("images\german w.jpg", 16, 8, 233, 89)
    $Pic4 = GUICtrlCreatePic("images\english w.jpg", 272, 8, 233, 89)
    GUISetState(@SW_SHOW)
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $GER_FLAG, $Pic3
    _german()
    Case $AMI_ENG_FLAG, $Pic4
    _english()
    EndSwitch
    WEnd

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

    Func _german()
    $Form3 = GUICreate("Multi-Game-Quest-Viewer by TheDarkCoderZ", 384, 246, 191, 409)
    $KalOnline = GUICtrlCreateButton("KalOnline", 24, 80, 153, 33)
    $Button3 = GUICtrlCreateButton("Demnächst!", 208, 80, 153, 33)
    $Button2 = GUICtrlCreateButton("Demnächst!", 208, 136, 153, 33)
    $Button4 = GUICtrlCreateButton("Demnächst!", 24, 136, 153, 33)
    $Button5 = GUICtrlCreateButton("Credits", 24, 192, 153, 33)
    $Beenden = GUICtrlCreateButton("Beenden", 208, 192, 153, 33)
    $Pic1 = GUICtrlCreatePic("images\logo w.jpg", 24, 8, 337, 73)
    GUISetState(@SW_SHOW)

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

    While 2
    $nMsg = GUIGetMsg(1)
    Switch $nMsg[0]
    Case $GUI_EVENT_CLOSE
    Switch $nMsg[1]
    Case $Form2
    Exit
    Case $Form3
    GUIDelete($Form3)
    EndSwitch
    EndSwitch
    $nMsg = GUIGetMsg(1)
    Switch $nMsg[0]
    Case $Beenden
    Switch $nMsg[1]
    Case $Form2
    Exit
    Case $Form3
    GUIDelete($Form3)
    EndSwitch
    Case $Button5
    _credits()
    Case $KalOnline
    _GerKalOnlineQuest()

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

    EndSwitch
    WEnd
    EndFunc ;==>_german

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

    Func _english()
    $Form1 = GUICreate("Multi-Game-Quest-Viewer by TheDarkCoderZ", 387, 242, 192, 124)
    $Button1 = GUICtrlCreateButton("KalOnline", 24, 80, 153, 33)
    $Button3 = GUICtrlCreateButton("Cooming soon!", 208, 80, 153, 33)
    $Button2 = GUICtrlCreateButton("Cooming soon!", 208, 136, 153, 33)
    $Button4 = GUICtrlCreateButton("Cooming soon!", 24, 136, 153, 33)
    $Button5 = GUICtrlCreateButton("Credits", 24, 192, 153, 33)
    $Exit = GUICtrlCreateButton("Exit", 208, 192, 153, 33)
    $Pic1 = GUICtrlCreatePic("images\logo w.jpg", 24, 8, 337, 73)
    GUISetState(@SW_SHOW)

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

    While 3
    $nMsg = GUIGetMsg(1)
    Switch $nMsg[0]
    Case $GUI_EVENT_CLOSE
    Switch $nMsg[1]
    Case $Form2
    Exit
    Case $Form1
    GUIDelete($Form1)
    EndSwitch
    EndSwitch
    $nMsg = GUIGetMsg(1)
    Switch $nMsg[0]
    Case $Exit
    Switch $nMsg[1]
    Case $Form2
    Exit
    Case $Form1
    GUIDelete($Form1)
    EndSwitch
    Case $Button5
    _credits()

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

    EndSwitch
    WEnd
    EndFunc ;==>_english

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

    Func _credits()
    $Form4 = GUICreate("Multi-Game-Quest-Viewer by TheDarkCoderZ // Credits", 484, 236, 297, 547)
    $Pic1 = GUICtrlCreatePic("images\credits.jpg", 0, 0, 481, 233)
    GUISetState(@SW_SHOW)
    While 4
    $nMsg = GUIGetMsg(1)
    Switch $nMsg[0]
    Case $GUI_EVENT_CLOSE
    Switch $nMsg[1]
    Case $Form2
    Exit
    Case $Form4
    GUIDelete($Form4)
    EndSwitch
    EndSwitch
    WEnd
    EndFunc ;==>_credits

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

    Func _GerKalOnlineQuest()

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

    $Form5 = GUICreate("Multi-Game-Quest-Viewer by TheDarkCoderZ // KalOnline (German) Quests", 615, 557, 271, 126)
    $Button1 = GUICtrlCreateButton("Quest 1", 8, 144, 91, 33)
    $Checkbox1 = GUICtrlCreateCheckbox("", 104, 144, 33, 33)
    $Button2 = GUICtrlCreateButton("Quest 2", 8, 184, 91, 33)
    $Checkbox2 = GUICtrlCreateCheckbox("", 104, 192, 17, 17)
    $Button3 = GUICtrlCreateButton("Quest 3", 8, 224, 91, 33)
    $Checkbox3 = GUICtrlCreateCheckbox("", 104, 232, 17, 17)
    $Button4 = GUICtrlCreateButton("Quest 4", 8, 304, 91, 33)
    $Checkbox4 = GUICtrlCreateCheckbox("", 104, 272, 17, 17)
    $Button5 = GUICtrlCreateButton("Quest 5", 8, 264, 91, 33)
    $Checkbox5 = GUICtrlCreateCheckbox("", 104, 312, 17, 17)
    $Button6 = GUICtrlCreateButton("Quest 6", 8, 344, 91, 33)
    $Checkbox6 = GUICtrlCreateCheckbox("", 104, 352, 17, 17)
    $Button7 = GUICtrlCreateButton("Quest 7", 8, 384, 91, 33)
    $Checkbox7 = GUICtrlCreateCheckbox("", 104, 392, 17, 17)
    $Button8 = GUICtrlCreateButton("Quest 8", 8, 424, 91, 33)
    $Checkbox8 = GUICtrlCreateCheckbox("", 105, 432, 15, 17)
    $Button9 = GUICtrlCreateButton("Quest 9", 8, 464, 91, 33)
    $Checkbox9 = GUICtrlCreateCheckbox("", 104, 472, 33, 17)
    $Button10 = GUICtrlCreateButton("Button10", 8, 504, 91, 33)
    $Checkbox10 = GUICtrlCreateCheckbox("", 104, 512, 97, 17)

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

    GUISetState(@SW_SHOW)

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

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

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

    EndSwitch
    WEnd
    EndFunc ;==>_GerKalOnlineQuest

    [/autoit]

    Weis das es ziemlich viel ist überlege rade vl. einige GUis mit #Inlcude zu machen ^^


    MfG

    Goldy

    Meine Projekte :

    Taschenrechner [X]
    JamLegend Auto-Player [Canceld]
    Launcher [X]
    Multi-Game-Quest-Viewer [Canceld]


    [autoit]

    If $goffy or not $brain Then $DeleteInetCable

    [/autoit]
  • Hallo Goldy,

    warum liest du dir die nict die Hilfe (speziell GUIGetMsg für Fortgeschrittene und mehrere Fenster) durch.

    • GUI's werden am Anfang definiert, die nicht benötigten mit GuiSetState[@SW_HIDE) versteckt und danach wenn aufgerufen mit GuiSetState(@SW_SHOW) wieder angezeigt.
    • Im Msg-Loop-Modus sollte grundsätzlich nur eine Endlosschleife (meist while 1...Wend, geht aber auch Do ... Until) vorkommen.
    • Innerhalb dieser Endlosschleife wird GuiGetMsg nur ein mal verwendet, da sich sonst die beiden gegenseitig die Nachrichten wegholen könnten.


    Arbeite also die Hilfe zumindest im GUI-Referenz - MessageLoop Modus durch, damit du hier die Grndlagen beherschst.

    Wusste jetzt nicht das dass so wichtig ist xD


    ist es nicht da man wenn man das Schema meines Beispiel-Skriptes ohne Probleme auf mehr Fenster erweitern kann, zudem habe ich es auskommentiert so dass es auch Anfänger (was du ja nach einem halben Jahr nicht mehr bist) verstehen können.

    mfg autoBert

    Einmal editiert, zuletzt von autoBert (19. September 2010 um 13:35)

  • Danke für deine hilfe autoBert.
    Ich selber sehe mich trozdem noch als Anfänger ^^

    Kann zwar schon ein paar sachen auswendig aber muss noch zu oft nach schauen wie was war ^^
    Aber langsam wird es ;D

    Meine Projekte :

    Taschenrechner [X]
    JamLegend Auto-Player [Canceld]
    Launcher [X]
    Multi-Game-Quest-Viewer [Canceld]


    [autoit]

    If $goffy or not $brain Then $DeleteInetCable

    [/autoit]