AlecSadler Posted July 28, 2017 Posted July 28, 2017 Hello I am looking for a way to make a GUI transparent but not the controls on it. Does anyone have some advice on how to do this? I found some info pointing to using _WinAPI_UpdateLayeredWindow() but there is no example code in the help file on how to use it. Func loading() Global $hGUI = GUICreate("", 500, 500, -1, -1, $WS_POPUP + $WS_EX_LAYERED) GUISetBkColor("0xFFFFFF") Global $hGIF = GUICtrlCreatePic("", 50, 50, 400, 400) _GUICtrlSetGIF($hGIF, $loading_image, Default, 1) GUICtrlCreateLabel("Loading.... Please Wait...", 85, 450, 400, 100) GUICtrlSetFont(-1, 24) GUISetState() EndFunc ;==>loading
AlecSadler Posted July 28, 2017 Author Posted July 28, 2017 winsettrans() worked for me in this case, thanks anyways!
Malkey Posted July 29, 2017 Posted July 29, 2017 See the example in the AutoIt help file for the _WinAPI_SetLayeredWindowAttributes() function.
mikell Posted July 29, 2017 Posted July 29, 2017 An other way... expandcollapse popup; http://www.autoitscript.com/forum/topic/157841-gui-fun/ #include <GuiConstantsEx.au3> #include <WindowsConstants.au3> HotKeySet("{ESC}", "QuitApp") $Main_Gui = GUICreate("", 400, 400, -1, -1, $WS_POPUP, $WS_EX_TOOLWINDOW + $WS_EX_TOPMOST) $But1 = GUICtrlCreateButton(" Exit ", 100, 100, 80, 21) $But2 = GUICtrlCreateLabel(" drag me ", 250, 100, 80, 21, -1, $GUI_WS_EX_PARENTDRAG) $Info_Edit = GUICtrlCreateEdit("A few words to start off with", 80, 150, 300, 220) GUISetControlsVisible($Main_Gui) GUISetState() While 1 If GUIGetMsg() = $But1 Then Exit WEnd Func GUISetControlsVisible($hWnd) Local $aClassList, $aM_Mask, $aCtrlPos, $aMask $aClassList = StringSplit(_WinGetClassListEx($hWnd), @LF) $aM_Mask = DllCall("gdi32.dll", "long", "CreateRectRgn", "long", 0, "long", 0, "long", 0, "long", 0) For $i = 1 To UBound($aClassList) - 1 $aCtrlPos = ControlGetPos($hWnd, '', $aClassList[$i]) If Not IsArray($aCtrlPos) Then ContinueLoop $aMask = DllCall("gdi32.dll", "long", "CreateRectRgn", _ "long", $aCtrlPos[0], _ "long", $aCtrlPos[1], _ "long", $aCtrlPos[0] + $aCtrlPos[2], _ "long", $aCtrlPos[1] + $aCtrlPos[3]) DllCall("gdi32.dll", "long", "CombineRgn", "long", $aM_Mask[0], "long", $aMask[0], "long", $aM_Mask[0], "int", 2) Next DllCall("user32.dll", "long", "SetWindowRgn", "hwnd", $hWnd, "long", $aM_Mask[0], "int", 1) EndFunc Func _WinGetClassListEx($sTitle) Local $sClassList = WinGetClassList($sTitle) Local $aClassList = StringSplit($sClassList, @LF) Local $sRetClassList = "", $sHold_List = "|" Local $aiInHold, $iInHold For $i = 1 To UBound($aClassList) - 1 If $aClassList[$i] = "" Then ContinueLoop If StringRegExp($sHold_List, "\|" & $aClassList[$i] & "~(\d+)\|") Then $aiInHold = StringRegExp($sHold_List, ".*\|" & $aClassList[$i] & "~(\d+)\|.*", 1) $iInHold = Number($aiInHold[UBound($aiInHold)-1]) If $iInHold = 0 Then $iInHold += 1 $aClassList[$i] &= "~" & $iInHold + 1 $sHold_List &= $aClassList[$i] & "|" $sRetClassList &= $aClassList[$i] & @LF Else $aClassList[$i] &= "~1" $sHold_List &= $aClassList[$i] & "|" $sRetClassList &= $aClassList[$i] & @LF EndIf Next Return StringReplace(StringStripWS($sRetClassList, 3), "~", "") EndFunc Func QuitApp() Exit EndFunc
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