Beim schließen des 2. GUI's schließt sich der 1.

  • Hallo Leute,

    Folgende Situation:

    Ich erstelle ein GUI1 mit einen Button, der einen anderen GUI2 öffnet, also theoretisch wie eine About/Info Button. Wenn ich diesen Button betätige, dann erscheint auch die GUI2, die auch auf alles reagiert. Nur wie kriege ich es hin, das ich wenn ich jetzt die GUI2 schließe, dass sich die GUI1 nicht mitschließt, also dass sich nicht der ganze Script schließt?

    http://pastebin.com/KKraHttx


    MfG

  • wenn du es so lassen willlst, dass wenn die 2 GUI aktiv ist du in der ersten nix machen kannst dann so:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    $Form1 = GUICreate("Test", 151, 87, 192, 124)
    $Button1 = GUICtrlCreateButton("About", 40, 32, 75, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    $Form2 = GUICreate("About", 186, 121, 302, 227)
    $hForm2 = WinGetHandle($Form2)
    $GroupBox1 = GUICtrlCreateGroup("", 8, 0, 89, 113)
    $Label1 = GUICtrlCreateLabel("Product Name", 16, 16, 72, 17, $WS_GROUP)
    $Label2 = GUICtrlCreateLabel("Version", 16, 40, 39, 17, $WS_GROUP)
    $Label4 = GUICtrlCreateLabel("Comments", 16, 88, 53, 17, $WS_GROUP)
    $Label3 = GUICtrlCreateLabel("Copyright", 16, 64, 48, 17, $WS_GROUP)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Button2 = GUICtrlCreateButton("OK", 104, 48, 75, 25)
    GUISetState(@SW_SHOW)
    While 1
    $oMsg = GUIGetMsg()
    Switch $oMsg
    Case $GUI_EVENT_CLOSE
    GUIDelete($hForm2)
    ExitLoop
    Case $Button2
    GUIDelete($hForm2)
    ExitLoop
    EndSwitch
    WEnd
    EndSwitch
    WEnd

    [/autoit]

    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.

  • Warum versteckst du es nicht einfach? ;)
    Wenn du Exit benutzt schließt sich natürlich das Programm

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    $Form1 = GUICreate("Test", 151, 87, 192, 124)
    $Button1 = GUICtrlCreateButton("About", 40, 32, 75, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)

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

    $Form2 = GUICreate("About", 186, 121, 302, 227)
    $GroupBox1 = GUICtrlCreateGroup("", 8, 0, 89, 113)
    $Label1 = GUICtrlCreateLabel("Product Name", 16, 16, 72, 17, $WS_GROUP)
    $Label2 = GUICtrlCreateLabel("Version", 16, 40, 39, 17, $WS_GROUP)
    $Label4 = GUICtrlCreateLabel("Comments", 16, 88, 53, 17, $WS_GROUP)
    $Label3 = GUICtrlCreateLabel("Copyright", 16, 64, 48, 17, $WS_GROUP)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Button2 = GUICtrlCreateButton("OK", 104, 48, 75, 25)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    _fensterwechseln($Form1,$Form2)
    Case $Button2
    _fensterwechseln($Form2,$Form1)
    EndSwitch
    WEnd

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

    Func _fensterwechseln($sAltesfenster,$sNeuesfenster)
    GUISetState(@SW_HIDE,$sAltesfenster)
    GUISetState(@SW_DISABLE,$sAltesfenster)
    GUISetState(@SW_ENABLE,$sNeuesfenster)
    GUISetState(@SW_SHOW,$sNeuesfenster)
    EndFunc

    [/autoit]

    21 is only half the truth.

  • naja, wenn man nicht direkt unnötige ressourcen belagern will lege ich dir meine Version nahe aber ansonsten ist das natürlich auch eine clevere methode.

    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.

  • PS: verwende in Zukunft bitte die AutoIt-Quellcode Funktion von AutoIt.de in einem Spoiler um den Code zu zeigen. (anstatt den Link zu verwenden)
    Das ist 3x effektiver. :D

  • Ich hab schon 1000x gesagt das die *beeeeep* AutoIT-Funktion im Forum nicht funktioniert. Der qwetscht mir meinen x-Zeiligen Code auf 1 - 4 Zeilen....

    Gibt es noch eine andere Methode als sie zu verstecken?

  • ;)

    21 is only half the truth.

  • Ich hab schon 1000x gesagt das die *beeeeep* AutoIT-Funktion im Forum nicht funktioniert. Der qwetscht mir meinen x-Zeiligen Code auf 1 - 4 Zeilen....

    Gibt es noch eine andere Methode als sie zu verstecken?

    lol
    ja meine von ganz oben die erste Antwort:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    $Form1 = GUICreate("Test", 151, 87, 192, 124)
    $Button1 = GUICtrlCreateButton("About", 40, 32, 75, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    $Form2 = GUICreate("About", 186, 121, 302, 227)
    $hForm2 = WinGetHandle($Form2)
    $GroupBox1 = GUICtrlCreateGroup("", 8, 0, 89, 113)
    $Label1 = GUICtrlCreateLabel("Product Name", 16, 16, 72, 17, $WS_GROUP)
    $Label2 = GUICtrlCreateLabel("Version", 16, 40, 39, 17, $WS_GROUP)
    $Label4 = GUICtrlCreateLabel("Comments", 16, 88, 53, 17, $WS_GROUP)
    $Label3 = GUICtrlCreateLabel("Copyright", 16, 64, 48, 17, $WS_GROUP)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Button2 = GUICtrlCreateButton("OK", 104, 48, 75, 25)
    GUISetState(@SW_SHOW)
    While 1
    $oMsg = GUIGetMsg()
    Switch $oMsg
    Case $GUI_EVENT_CLOSE
    GUIDelete($hForm2)
    ExitLoop
    Case $Button2
    GUIDelete($hForm2)
    ExitLoop
    EndSwitch
    WEnd
    EndSwitch
    WEnd

    [/autoit]

    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.