Da hab ich schon ein neues Problem, was mich jetzt schon ein paar Stunden beschäftigt. Vorweg, dieses Thema gibt es hier schon oft, auch die Hilfe hat Beispiele. Aber irgendwie ist nie genau das dabei, was ich gerne hätte. Also hab ich versucht, mir aus verschiedenen Thread's etwas zusammen zu suchen.
Die Aufgabe ist, von einem Hauptfenster mit Klick auf irgendwas ein zweites Fenster zu öffnen. Dieses soll dann das aktive Fenster sein und das Hauptfenster DISABLEn. Schließt man das zweite Fenster, egal mit was und aber auch mit X in der Windows-Leiste, soll es 'verschwinden' und das Hauptfenster wieder zum aktiven machen. Eigentlich nichts weltbewegendes, aber naja...
Mein Script macht das alles, aber nur teils zufriedenstellend. Ich hab es ein wenig kommentiert und bei ';Windows-X von Win_2' ist es so, wie es sein soll. Nur das WinActivate aktiviert zwar das Hauptfenster wieder, aber sichbar verzögert. Als ob das Fenster komplett neu aufgebaut wird. Das stört mich, hab aber bisher keine brauchbare Lösung gefunden. In ';Ende-Button von Win_2' sieht man ein paar Befehle, die ich probiert habe.
Vielleicht kann jemand von euch mal einen Blick drauf werfen und mir sagen, was da falsch ist?!
#include <GUIConstantsEx.au3>
[/autoit][autoit][/autoit][autoit]$formWin_1 = GUICreate("Form1")
$btn_insert_1 = GUICtrlCreateButton("Insert", 10, 60, 60, 24)
$btn_end_1 = GUICtrlCreateButton("End", 10, 90, 60, 24)
;GUISetState(@SW_SHOW)
$formWin_2 = GUICreate("Form2", 300, 200)
$btn_end_2 = GUICtrlCreateButton("End", 10, 60, 60, 24)
;GUISetState(@SW_HIDE)
;Bei beiden der selbe Effekt
;GUISwitch($formWin_1)
GUISetState(@SW_SHOW, $formWin_1)
While 1
$msg = GUIGetMsg(1)
Select
;Insert-Button von Win_1
Case $msg[0] = $btn_insert_1
GUISetState(@SW_SHOW,$formWin_2)
GUISetState(@SW_DISABLE,$formWin_1)
;Ende-Button von Win_1
Case $msg[0] = $btn_end_1
Exit
;Windows-X von Win_1
Case $msg[0] = $GUI_EVENT_CLOSE And $msg[1] = $formWin_1
Exit
;Windows-X von Win_2
Case $msg[0] = $GUI_EVENT_CLOSE And $msg[1] = $formWin_2
GUISetState(@SW_HIDE,$formWin_2)
GUISetState(@SW_ENABLE,$formWin_1)
WinActivate($formWin_1)
;Ende-Button von Win_2
Case $msg[0] = $btn_end_2
GUISetState(@SW_HIDE,$formWin_2)
GUISetState(@SW_ENABLE,$formWin_1)
;WinActivate($formWin_1) ; Das selbe wie ohne WinActivate
WinSetState($formWin_1, "", @SW_ENABLE)
;WinClose($formWin_1, "") ; schließt beide Fenster
;WinSetOnTop($formWin_1, "", 1) ; Legt es dann immer nach vorne
;Mit geht garnichts! War im Bsp-Code dabei.
;ExitLoop
EndSelect
WEnd
Mir grault es schon, wenn ich mal noch ein weiteres Fenster einbinden möchte.