Die magischen Worte sind GUISetState's 2ter Parameter ( wie von Raupi schon erwähnt )
und Erweiterter GUIgetMsg Mode. Dann brauchst du nicht 600 schleifen, sondern nur eine. Siehe hier:
Spoiler anzeigen
#include <GUIConstantsEx.au3>
Opt("GUIOnEventMode", 0)
$frmMain = GUICreate("Forum", 625, 445, 193, 125)
$Label1 = GUICtrlCreateLabel("Hauptmenü", 225, 24, 450, 41)
GUICtrlSetFont(-1, 24, 800, 0, "MS Sans Serif")
$Button1 = GUICtrlCreateButton("Auswahl 1", 78, 96, 175, 33, 0)
$Button2 = GUICtrlCreateButton("Auswahl 2", 384, 96, 175, 33, 0)
$Button3 = GUICtrlCreateButton("3", 78, 160, 175, 33, 0)
$Button4 = GUICtrlCreateButton("4", 384, 160, 175, 33, 0)
$Button5 = GUICtrlCreateButton("5", 78, 224, 175, 33, 0)
$Button6 = GUICtrlCreateButton("6", 384, 224, 175, 33, 0)
$Button7 = GUICtrlCreateButton("Schließen", 350, 304, 155, 65, 0)
; Abfrage 1
$Abfrage1 = GUICreate('Auswahl 1', 215, 50)
$1_Button1 = GUICtrlCreateButton('Prog 1', 10, 10, 90, 30)
$1_Button2 = GUICtrlCreateButton('Prog 2', 110, 10, 90, 30)
; Abfrage 2
$Abfrage2 = GUICreate('Auswahl 2', 215, 50)
$2_Button1 = GUICtrlCreateButton('Progr 3', 10, 10, 90, 30)
$2_Button2 = GUICtrlCreateButton('Progr 4', 110, 10, 90, 30)
GUISetState(@SW_SHOW,$frmMain)
While 1
$nMsg = GUIGetMsg(1)
Switch $nMsg[1] ; Fenster
Case $frmMain
Switch $nMsg[0]
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
GUISetState(@SW_HIDE,$frmMain)
_Abfrage1()
Case $Button2
GUISetState(@SW_HIDE,$frmMain)
_Abfrage2()
Case $Button3
GUISetState(@SW_HIDE,$frmMain)
_mglk3()
Case $Button4
GUISetState(@SW_HIDE,$frmMain)
_mglk4()
Case $Button5
GUISetState(@SW_HIDE,$frmMain)
_mglk5()
Case $Button6
GUISetState(@SW_HIDE,$frmMain)
_mglk6()
Case $Button7
Exit
EndSwitch
Case $Abfrage1
Switch $nMsg[0]
Case $GUI_EVENT_CLOSE
GUISetState(@SW_HIDE,$Abfrage1)
GUISetState(@SW_SHOW,$frmMain)
Case $1_Button1
GUISetState(@SW_HIDE,$Abfrage1)
_mglk1()
GUISetState(@SW_SHOW,$frmMain);hier soll nicht das vorherige sondern das Hauptfenster wiederhergestellt werden
Case $1_Button2
GUISetState(@SW_HIDE,$Abfrage1)
_mglk2()
GUISetState(@SW_SHOW,$frmMain);hier soll nicht das vorherige sondern das Hauptfenster wiederhergestellt werden
EndSwitch
Case $Abfrage2
Switch $nMsg[0]
Case $GUI_EVENT_CLOSE
GUISetState(@SW_HIDE,$Abfrage2)
GUISetState(@SW_SHOW,$frmMain)
Case $2_Button1
GUISetState(@SW_HIDE,$Abfrage1)
_mglk3()
GUISetState(@SW_SHOW,$frmMain);hier soll nicht das vorherige sondern das Hauptfenster wiederhergestellt werden
Case $2_Button2
GUISetState(@SW_HIDE,$Abfrage1)
_mglk4()
GUISetState(@SW_SHOW,$frmMain);hier soll nicht das vorherige sondern das Hauptfenster wiederhergestellt werden
EndSwitch
EndSwitch
WEnd
Func _Abfrage1()
GUISetState(@SW_SHOW,$Abfrage1)
EndFunc ;_Abfrage1
Func _Abfrage2()
GUISetState(@SW_SHOW,$Abfrage2)
EndFunc ;_Abfrage2
Func _mglk1()
MsgBox(0,'','Möglichkeit 1')
EndFunc
Func _mglk2()
MsgBox(0,'','Möglichkeit 2')
EndFunc
Func _mglk3()
MsgBox(0,'','Möglichkeit 3')
EndFunc
Func _mglk4()
MsgBox(0,'','Möglichkeit 4')
EndFunc
Func _mglk5()
MsgBox(0,'','Möglichkeit 5')
EndFunc
Func _mglk6()
MsgBox(0,'','Möglichkeit 6')
EndFunc