Wechseln ziwschen mehreren GUI-Fenstern

  • Hallo zusammen.....folgendes kleines GUI "Problem".

    Ich arbeite mit zwei selbsterstellten Fenstern, wovon eines aber zu Beginn den Status @SW_HIDE hat...nennen wir es GUI2
    Wenn ich in GUI1 auf einen Button klicke, erscheint GUI2 über @SW_SHOW...soweit so gut.

    Wie schaff ich es aber, dass ich GUI2 schließen kann, aber GUI1 immer noch da und voll funktionsfähig ist.
    Hab es versucht, dass, wenn ich GUI2 über das x schliese es lediglich wieder versteckt wird, aber dann reagiert meine GUI1 nichtmehr.

    Einmal editiert, zuletzt von nachtvogel85 (23. Februar 2010 um 13:44)

  • Hier mein, im Moment doch noch recht wirrer, Code
    Edit:
    Der Startbtn und Stopbtn soll erst erscheinen, wenn in GUI mit "JA" bestätigt wurde

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>
    #include "Constants.au3"
    #include <GUIConstantsEx.au3>
    #include <EditConstants.au3>
    #Include <GuiButton.au3>

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

    ;~ ;Variable für das Passwort
    Local $TrueCryptPasswort
    $CAG = GUICreate("Companio AG",300,200)
    $CAG = GUISetState(@SW_SHOW)
    $CAG = GUICtrlCreateLabel("Für die Demo müssen die Festplatten entschlüsselt werden."&@CRLF&"Bitte geben sie das Kennwort ein", 10, 15)
    $pwbox = GUICtrlCreateInput("",10,53,200,20,$ES_PASSWORD)
    $sendbtn = GUICtrlCreateButton("entschlüsseln",215,50,80)
    $startbtn = GUICtrlCreateButton("SYSTEME STARTEN",10,75)
    $stopbtn = GUICtrlCreateButton("SYSTEME STOPPEN",150,75)

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

    $mount = GUICreate("",200,75)
    $mount = GUISetState(@SW_HIDE)
    $mount = GUICtrlCreateLabel("Sehen Sie die Meldung:"&@CRLF&'"Festplatten sind entschluesselt"?', 10, 15)
    $jbtn = GUICtrlCreateButton("JA",10,45)
    $nbtn = GUICtrlCreateButton("NEIN",75,45)

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

    While 1
    $msg = GUIGetMsg()
    _GUICtrlButton_Show($startbtn, False)
    _GUICtrlButton_Show($stopbtn, False)
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $sendbtn
    $TCPW = GUICtrlRead($pwbox)
    If StringLen($TCPW) <> 5 Then
    MsgBox(1,"Warnung","Falsches Passwort wurde eingegeben!")
    ElseIf StringLen($TCPW) == 5 Then
    FestplatteMounten()
    EndIf
    EndSwitch
    WEnd
    GUIDelete()

    Func FestplatteMounten()

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

    $mount = GUISetState(@SW_SHOW)
    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE

    Case $jbtn
    MsgBox(1,"","Ja Button wurde gedrückt")
    Case $nbtn
    MsgBox(1,"","Nein Button wurde gedrückt")
    $mount = GUISetState(@SW_HIDE)

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

    EndSwitch
    WEnd

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

    EndFunc

    [/autoit]
  • Hier ein Beispiel:

    Spoiler anzeigen
    [autoit]


    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.3.2.0
    Author: qixx (http://www.autoit.de)
    Credits:

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

    #ce ----------------------------------------------------------------------------

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

    #Region ### Includes
    #include <GUIConstants.au3>
    #EndRegion ### Includes

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

    #Region ### GUI
    $Gui1 = GUICreate("1")
    $Button = GuiCtrlCreateButton("Klick Mich",1,1)
    GUISetState(@SW_SHOW)

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

    $Gui2 = GUICreate("2")
    GUISetState(@SW_HIDE)
    #EndRegion ### GUI

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

    While 1
    Sleep(10)
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    If WinActive($Gui1) Then
    Exit
    ElseIf WinActive($Gui2) Then
    GUISetState(@SW_HIDE, $Gui2)
    Endif
    Case $Button
    GUISetState(@SW_SHOW, $Gui2)
    EndSwitch
    WEnd

    [/autoit]


    MfG
    qixx

  • Ouch quixx das tut ja fast schon weh.
    Wenn du schon Beispiele postest, dann auch bitte mit advanced GUIGetMsg() Mode. so wie es sich gehlört :D

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    $gui1 = GUICreate('GUI 1', 500, 300, 100, 100)
    $button1 = GUICtrlCreateButton('Aufruf GUI 2', 20, 20, 100, 21)

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

    $gui2 = GUICreate('GUI 2', 500, 300, 500, 500)
    $button2 = GUICtrlCreateButton('Zurück zu GUI 1', 20, 20, 100, 21)

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

    GUISetState(@SW_SHOW, $gui1)

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

    While 1
    $msg = GUIGetMsg(1) ; Advanced GUIGetMsg()-Mode (s. Hilfe)
    Switch $msg[0] ; Ereignis
    Case $button1
    GUISetState(@SW_SHOW, $gui2)
    GUISetState(@SW_HIDE, $gui1)
    Case $button2
    GUISetState(@SW_SHOW, $gui1)
    GUISetState(@SW_HIDE, $gui2)
    Case $GUI_EVENT_CLOSE
    Switch $msg[1] ; Fenster
    Case $gui2
    GUISetState(@SW_SHOW, $gui1)
    GUISetState(@SW_HIDE, $gui2)
    Case $gui1
    Exit
    EndSwitch
    EndSwitch
    WEnd

    [/autoit]
  • Danke.....

    Nur eine Frage zu meinem Code....kann es vlt sein, dass der Code nicht damit zurechtkommt, dass eine GUI über eine Funktion gesteuert wird?


  • Nur eine Frage zu meinem Code.

    Welcher Code?! Wo?! Ich seh keinen, und meine Glaskugel ist noch in der Reinigung.
    Sorry bin grad erst aufgestanden, ich guck mal durch :D

    Zitat

    kann es vlt sein, dass der Code nicht damit zurechtkommt, dass eine GUI über eine Funktion gesteuert wird?


    Nein, es liegt daran, dass du die Falsche Logik benutzt.
    //EDIT: GUISetState() und Co. haben auch einen zweiten Paramter!

    Meinst du es ungefähr so? :

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>
    #include "Constants.au3"
    #include <GUIConstantsEx.au3>
    #include <EditConstants.au3>
    #include <GuiButton.au3>

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

    ;~ ;Variable für das Passwort
    Local $TrueCryptPasswort
    $CAG = GUICreate("Companio AG", 300, 200)
    GUISetState(@SW_SHOW, $CAG)
    GUICtrlCreateLabel("Für die Demo müssen die Festplatten entschlüsselt werden." & @CRLF & "Bitte geben sie das Kennwort ein", 10, 15)
    $pwbox = GUICtrlCreateInput("", 10, 53, 200, 20, $ES_PASSWORD)
    $sendbtn = GUICtrlCreateButton("entschlüsseln", 215, 50, 80)
    $startbtn = GUICtrlCreateButton("SYSTEME STARTEN", 10, 75)
    $stopbtn = GUICtrlCreateButton("SYSTEME STOPPEN", 150, 75)
    ControlHide($CAG, "", $startbtn)
    ControlHide($CAG, "", $stopbtn)

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

    $mount = GUICreate("", 200, 75)
    GUISetState(@SW_HIDE, $mount)
    GUICtrlCreateLabel("Sehen Sie die Meldung:" & @CRLF & '"Festplatten sind entschluesselt"?', 10, 15)
    $jbtn = GUICtrlCreateButton("JA", 10, 45)
    $nbtn = GUICtrlCreateButton("NEIN", 75, 45)

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

    While 1
    $msg = GUIGetMsg(1)
    Switch $msg[0] ; Event
    Case $GUI_EVENT_CLOSE
    If $msg[1] = $CAG Then Exit
    If $msg[1] = $mount Then GUISetState(@SW_HIDE, $mount)
    Case $sendbtn
    $TCPW = GUICtrlRead($pwbox)
    If StringLen($TCPW) <> 5 Then
    MsgBox(1, "Warnung", "Falsches Passwort wurde eingegeben!")
    ElseIf StringLen($TCPW) == 5 Then
    GUISetState(@SW_SHOW, $mount)
    EndIf
    Case $jbtn
    ControlShow($CAG, "", $startbtn)
    ControlShow($CAG, "", $stopbtn)
    GUISetState(@SW_HIDE, $mount)
    Case $nbtn
    GUISetState(@SW_HIDE, $mount)
    EndSwitch
    WEnd
    GUIDelete()

    [/autoit]
  • Ja...genau so.
    Sollte auch mal wieder mehr schlafen, dann sehen meine Augen auch mehr was in der Hilfe steht -.-

    Danke nochmals :thumbup: :thumbup: :thumbup:

  • Ouh Gott. xD
    Ich bin so ein Trottel. :D
    Da habe ich gar nicht drüber nachgedacht. Aber es geht! :D


    MfG
    qixx