Thomymaster Posted August 25, 2015 Share Posted August 25, 2015 Hi I created my main GUI form and want to have like a message display box saying something like "please wait". It will then disappear once the process finished. It shouldn't include a maximize/minimize/close control and when shown, be on the foreground exclusively (you cannot click the main GUI until it disappears). How can i do that? Global Const $hGUIPicturemanager_WordRead=GUICreate("Please Wait",300,150,-1,-1,$WS_DLGFRAME,-1) Global Const $hGUIPicturemanager_WordRead_Text_static=GUICtrlCreateLabel("Please wait, processing",15,20,100,10) GUISetState(@SW_SHOW,$hGUIPicturemanager_WordRead) ; do something GUISetState(@SW_HIDE,$hGUIPicturemanager_WordRead) ;WinSetOnTop($hGUIPicturemanager_WordRead,"",1) doesn't work Link to comment Share on other sites More sharing options...
AutoBert Posted August 25, 2015 Share Posted August 25, 2015 Use the last (optional) parameter "parent" with GuiCreate. Here's a small example:expandcollapse popup#include <GUIConstantsEx.au3> #include<WindowsConstants.au3> Global $hGui1, $hGui2 = -99, $idMsgBox, $idZurueck, $idbtnExit2 ;_CreateGui2() ;entweder hier oder erst wenn benötigt ($idbtmToGui2 Klick) #Region GUI1 ##################################################################################### $hGui1 = GUICreate('GUI 1', 400, 280, 140, 150, BitOR($WS_MINIMIZEBOX, $WS_MAXIMIZEBOX, $WS_SIZEBOX)) ;erzeugt eine GUI , das zurückgebebene Handle wird in der Variablen $hGui1 gespeichert ;die GUI hat BOXen für Mininmieren, Maximieren und ist in der Größe frei änderbar $idbtnToGui2 = GUICtrlCreateButton('&Aufruf GUI 2', 20, 20, 100, 21) GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP) ;verankert den Button "Aufruf Gui 2" links und oben und fixiert die Größe ;beim Resizen bleibt es dadurch auf seiner Position am rechten Rand $idbtnICQ = GUICtrlCreateButton('&ICQ', 20, 50, 100, 21) GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP) ;verankert den Button "ICQ" links und oben und fixiert die Größe ;beim Resizen bleibt es dadurch auf seiner Position am rechten Rand $idbtnExit1 = GUICtrlCreateButton('be&enden', 280, 225, 100, 21) GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM) ;verankert den Button "beenden" links und oben und fixiert die Größe ;beim Resizen bleibt es dadurch auf seiner Position am rechten Rand GUISetState(@SW_SHOW, $hGui1) #EndRegion ########################################################################################### While 1 $nMsg = GUIGetMsg(1) ;extended Modus wichtig!! Switch $nMsg[1] ;für welches Fenster ist die Message Case $hGui1 ;ab hier ist Gui 1 dran Switch $nMsg[0] ;welche Message wurde ausgelöst Case $idbtnToGui2 GUISetState(@SW_DISABLE, $hGui1) ;Gui 1 gegen Benutzereingaben sperren If $hGui2 = -99 Then _CreateGui2() ;nur wenn nicht am Anfang bereits erzeugt nötig, dann auf Vorbelegung der Variable in Global achten) GUISetState(@SW_SHOW, $hGui2) ;Gui 2 anzeigen Case $idbtnICQ MsgBox(0, "", "Jetzt würde ICQ gestartet", 0, $hGui1) ;Run("C:\Program Files\ICQ7.0\ICQ.exe") Case $idbtnExit1, $GUI_EVENT_CLOSE _end() EndSwitch Case $hGui2 ;ab hier ist Gui 2 dran Switch $nMsg[0] ;welche Message wurde ausgelöst Case $idMsgBox MsgBox(0, 'Test', 'Test', 0, $hGui2) Case $idZurueck, $GUI_EVENT_CLOSE GUISetState(@SW_ENABLE, $hGui1) ;Gui 1 wieder entsperren GUISetState(@SW_HIDE, $hGui2) ;Gui 2 verstecken Case $idbtnExit2 _end() EndSwitch EndSwitch WEnd Func _CreateGui2() $hGui2 = GUICreate('GUI 2', 400, 280, 200, 50, -1, -1, $hGui1) ;wichtig ist der letzte Parameter ;erzeugt eine GUI als Child von Gui1, das zurückgebebene Handle wird in der Variablen $hGui2 gespeichert $idMsgBox = GUICtrlCreateButton('&MsgBox', 20, 20, 100, 21) $idZurueck = GUICtrlCreateButton('&Zurück zu GUI 1', 20, 50, 100, 21) $idbtnExit2 = GUICtrlCreateButton('be&enden', 280, 250, 100, 21) GUISetState(@SW_HIDE, $hGui2) ;Gui 2 vorerst verstecken EndFunc ;==>_CreateGui2 Func _end() GUIDelete($hGui2) GUIDelete($hGui1) Exit EndFunc ;==>_end Link to comment Share on other sites More sharing options...
Thomymaster Posted August 27, 2015 Author Share Posted August 27, 2015 Hi This still doesn't work, seeLocal Const $hGUIPicturemanager_PicturesRename=GUICreate("Bitte warten",300,120,-1,-1,$WS_DLGFRAME,-1,$hGUIPicturemanager_main) Local Const $hGUIPicturemanager_PicturesRename_Text_static=GUICtrlCreateLabel("Bitte warten Sie, die Bilder werden umbenannt",20,20,300,30) Local Const $idmPicturesRename_Progress=GUICtrlCreateLabel("",20,50,300,30) ; !! GUISetState(@SW_SHOW,$hGUIPicturemanager_PicturesRename) WinSetOnTop($hGUIPicturemanager_PicturesRename,"",1)$hGUIPicturemanager_main is the main UI. The child UI is displayed but it is still possible to switch focus to the main UI (which shouldn't). Link to comment Share on other sites More sharing options...
AutoBert Posted August 27, 2015 Share Posted August 27, 2015 Have you tested my example? It work's because of line 35:GUISetState(@SW_DISABLE, $hGui1) ;Gui 1 gegen Benutzereingaben sperrenand line 49:GUISetState(@SW_ENABLE, $hGui1) ;Gui 1 wieder entsperren Link to comment Share on other sites More sharing options...
Thomymaster Posted September 15, 2015 Author Share Posted September 15, 2015 Hi Yes that works, thanks Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now