Mehrere GUIs verwenden ohne gegenseitige Beeinflussung

  • Hallo zusammen,

    ich habe ein Anfängerproblem mit GUIs.

    Ich nutze zu Beginn meines Programms ein GUI als Infofenster. Im späteren Verlauf öffne ich ein weiteres GUI, um eine Auswahl zu treffen. Das zweite GUI funktioniert fehlerfrei in einer eigenständigen Datei, auch wenn ich es in eine Funktion einbaue um es aufzurufen. Im Programm (Verwendung der gleichen Funk.) wird aber nur der Hintergrund dargestellt, die Auswahlelemente fehlen, es werden jedoch die vorausgewählten Werte übertragen!!??

    ich vermute das erste GUI ist quasi noch aktiv, wie kann ich es endgültig "beenden"??

    Folgendes hat nicht geklappt:

    While 1 ; MessageBox zur Info bei Beenden von GUI 1
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then
    GuiSetState(@SW_DISABLE)
    GUIDelete() 
    ExitLoop
    EndIf
    Wend

    ebensowenig erfolgreich zu Beginn von GUI 2:

    GuiSetState(@SW_UNLOCK)
    GuiSetState(@SW_SHOW)

    wer kann helfen??

    Spoiler anzeigen
    [autoit]


    #include <GuiConstantsEx.au3>
    #include <GUIConstants.au3>

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

    HotKeySet ("g","gui")

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

    Global $character[5], $channel[5], $cha, $fig

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

    ; Beginn GUI 1 ###########################
    GUICreate("Helper",220,240) ; will create a dialog box that when displayed is centered
    Opt("GUICoordMode",2)
    $laenge = 200
    $hoehe = 20
    GUICtrlCreateLabel (......... >>> SKRIPT GEKÜRZT <<<<
    ............
    GUICtrlCreateLabel ("Login : Strg - l", -$laenge, 0, $laenge, $hoehe)
    GUISetState ()

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

    While 1 ; MessageBox zur Info
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then
    GuiSetState(@SW_DISABLE)
    GUIDelete()
    ExitLoop
    EndIf
    Wend
    ; Ende GUI 1 ###########################

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

    While (1) ; Hauptschleife Helper
    Sleep(1000) ; Überprüft jede Sekunde ob Hotkeys benutzt wurden
    WEnd ; Schließt die Schleife ab

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

    Func gui () ; Anfang GUI 2
    GuiCreate(" ", 400, 400) ; GUI
    GuiSetIcon("leer.ico", 0)
    GuiCtrlSetColor(-1,0xffffff)
    GuiCtrlCreatePic("header.jpg",10,10, 380,100) ; PIC
    GuiCtrlCreateGroup("Character - Auswahl", 10, 120, 185, 110) ;; GROUP WITH RADIO BUTTONS
    $gr_xpos = 30
    $gr_ypos = 140
    $gr_deltay = 20
    $character[1] = GuiCtrlCreateRadio("1", $gr_xpos, $gr_ypos, 80)
    GuiCtrlSetState(-1, $GUI_CHECKED)
    $character[2] = GuiCtrlCreateRadio("2", $gr_xpos, $gr_ypos+$gr_deltay, 80)
    $character[3] = GuiCtrlCreateRadio("3", $gr_xpos, $gr_ypos+2*$gr_deltay, 80)
    $character[4] = GuiCtrlCreateRadio("4", $gr_xpos, $gr_ypos+3*$gr_deltay, 80)
    GUICtrlCreateGroup ("",-99,-99,1,1) ;close group
    GuiCtrlCreateGroup("Startchannel - Auswahl", 205, 120, 185, 110) ;; GROUP WITH RADIO BUTTONS
    $gr_xpos = 225
    $gr_ypos = 140
    $gr_deltay = 20
    $channel[1] = GuiCtrlCreateRadio("Channel 1", $gr_xpos, $gr_ypos, 80)
    $channel[2] = GuiCtrlCreateRadio("Channel 2", $gr_xpos, $gr_ypos+$gr_deltay, 80)
    $channel[3] = GuiCtrlCreateRadio("Channel 3", $gr_xpos, $gr_ypos+2*$gr_deltay, 80)
    GuiCtrlSetState(-1, $GUI_CHECKED)
    $channel[4] = GuiCtrlCreateRadio("Channel 4", $gr_xpos, $gr_ypos+3*$gr_deltay, 80)
    GUICtrlCreateGroup ("",-99,-99,1,1) ;close group
    $endbutton = GuiCtrlCreateButton("... weiter", 10, 330, 100, 30) ; BUTTON
    GuiSetState(@SW_UNLOCK)
    GuiSetState(@SW_SHOW)
    While (1) ; GUI MESSAGE LOOP
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then
    ausgabe ()
    GuiSetState(@SW_DISABLE)
    GUIDelete ()
    ExitLoop
    EndIf
    If $msg = $endbutton Then
    ausgabe ()
    GuiSetState(@SW_DISABLE)
    GUIDelete ()
    ExitLoop
    EndIf
    WEnd
    EndFunc

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

    Func ausgabe ()
    for $i = 1 to 4
    $zwi1 = GUICtrlRead($character[$i])
    $zwi2 = GUICtrlRead($channel[$i])
    if $zwi1 = 1 Then
    $fig = $i
    EndIf
    if $zwi2 = 1 Then
    $cha = $i
    EndIf
    Next
    MsgBox ( 1, "Gewählt wurde :", $fig & "---" & $cha )
    EndFunc

    [/autoit]
  • Probiers mal so:

    Spoiler anzeigen
    [autoit]

    $gui1 = GUICreate("Helper",220,240) ; will create a dialog box that when displayed is centered
    GuiSetState(@SW_DISABLE, $gui1)
    GUIDelete($gui1)
    ;GUI2
    $gui2 = GuiCreate(" ", 400, 400) ; GUI
    GuiSetState(@SW_UNLOCK, $gui2)
    GuiSetState(@SW_SHOW, $gui2)

    [/autoit]

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D