31290 Posted April 30, 2015 Posted April 30, 2015 (edited) Hi everyone, Hope you're doing great today.I've made a script that include 5 GUIS all containing a little menu bar. ;GUI MenusFunc Menus() Global $MenuItem1 = GUICtrlCreateMenu("?") Global $MenuItem2 = GUICtrlCreateMenuItem ("Help", $Menuitem1) Global $MenuItem3 = GUICtrlCreateMenu("Exits") Global $MenuItem4 = GUICtrlCreateMenuItem("Exit Software", $MenuItem3) Global $MenuItem5 = GUICtrlCreateMenuItem("Exit And Delete Resources", $MenuItem3) Global $MenuItem6 = GUICtrlCreateMenu("About") Global $MenuItem7 = GUICtrlCreateMenuItem("About", $MenuItem6)EndFuncAnd here's one of my GUI's: ; Creating Tech GID GUIFunc TechGui () Global $TechGui = GUICreate ("Automated Task List Suite", 270, 180, -1, -1) Menus() GUISetIcon ($Images & "\TechGUI.ico") GUISetBkColor ($Color_White) GUICtrlCreatePic ($Images & "\SAClogo.jpg", 14, 10, 240, 80) GUICtrlCreateLabel ("Please Enter Your Global ID:", -1, 100, 150, 20) GUICtrlSetFont (-1, 8.5, 700, 0) Local $TechGiDInput = GUICtrlCreateInput ("", -1, 130, 100, 20) Local $TechBtn = GUICtrlCreateButton ("OK", 120, 127, 30, 25, 0x0001) While 1 GUIRegisterMsg($WM_COMMAND, "WM_COMMAND") GUISetState () Local $TechMsg = GUIGetMsg () Switch $TechMsg Case $GUI_EVENT_CLOSE Exit Case $TechBtn Global $TechGiD = GUICtrlRead ($TechGiDInput) FileOpen ($Resources & "\TechGID.txt", $FO_OVERWRITE) FileWrite ($Resources & "\TechGID.txt", $techGID) FileClose ($Resources & "\TechGID.txt") If ($TechGiD == "") Then Msgbox (16, "ERROR", "You can't be a ghost, try again") Else GUIDelete ($TechGui) CmpModelGui () Endif EndSwitch Select Case $TechMsg = $MenuItem7 About() EndSelect WEndEndFuncThe problem is that when I call the about box and when I close it, all buttons from the calling GUI are disabled... Also, is it possible to create a general about box without having to associate it to the GUI calling it?In fact, I'd love to have this kind of AboutBox: #Include <GUIConstantsEx.au3>$hForm = GUICreate('MyGUI', 400, 400)$Button = GUICtrlCreateButton('About', 165, 366, 70, 23)GUISetState()While 1 $Msg = GUIGetMsg() Switch $Msg Case $GUI_EVENT_CLOSE ExitLoop Case $Button _WinAPI_ShellAbout('About', 'About Dialog Box Test', 'Simple Text', _WinAPI_SHExtractIcons('shell32.dll', 130, 33, 33), $hForm) EndSwitchWEndFunc _WinAPI_ShellAbout($sTitle, $sName, $sText, $hIcon = 0, $hParent = 0) Local $Ret = DllCall('shell32.dll', 'int', 'ShellAbout', 'hwnd', $hParent, 'str', $sTitle & '#' & $sName, 'str', $sText, 'ptr', $hIcon) If (@error) Or ($Ret[0] = 0) Then Return SetError(1, 0, 0) EndIf Return 1EndFunc ;==>_WinAPI_ShellAboutFunc _WinAPI_SHExtractIcons($sIcon, $iIndex, $iWidth, $iHeight) Local $Ret = DllCall('shell32.dll', 'int', 'SHExtractIconsW', 'wstr', $sIcon, 'int', $iIndex, 'int', $iWidth, 'int', $iHeight, 'ptr*', 0, 'ptr*', 0, 'int', 1, 'int', 0) If (@error) Or ($Ret[0] = 0) Or ($Ret[5] = Ptr(0)) Then Return SetError(1, 0, 0) EndIf Return $Ret[5]EndFunc ;==>_WinAPI_SHExtractIconsBut I don't know how can I personalize it and integrate it in my script.Many thanks in advance for you generous help Edited April 30, 2015 by 31290 ~~~ Doom Shall Never Die, Only The Players ~~~
kylomas Posted May 1, 2015 Posted May 1, 2015 31290,You really do NOT want to run this in your message loopGUIRegisterMsg($WM_COMMAND, "WM_COMMAND")For further help please post a runnable reproducer using code tags.kylomas Forum Rules Procedure for posting code "I like pigs. Dogs look up to us. Cats look down on us. Pigs treat us as equals." - Sir Winston Churchill
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