kklee69 Posted November 1, 2016 Share Posted November 1, 2016 (edited) On 2008年6月8日 at 4:26 PM, ChrisL said: I started messing around with this when someone asked about transparent controls before. I made a function for creating transparent controls but martin below had a better way of doing it. (Thanks for the help martin!) It's a great UDF, but I'm having problems with it.Can you help me with my problem?Question oneWhen the GUI is minimized and then restored, you can see that the LISTVIEW location is different Question two You can see the pattern of the location of chaos outBecause added BitOR($WS_MAXIMIZEBOX, $WS_MINIMIZEBOX, $WS_SYSMENU, $WS_GROUP, $WS_TABSTOP) So the location will be confused Look at my pictures Here is MY CODE expandcollapse popup#include <GUIConstantsEx.au3> #include <MsgBoxConstants.au3> #include <WindowsConstants.au3> ; GUICreate("LISTVIEW", 220, 250, 100, 200, -1, $WS_EX_ACCEPTFILES) GUICreate("LISTVIEW", 220, 250, 100, 200, BitOR($WS_MAXIMIZEBOX, $WS_MINIMIZEBOX, $WS_SYSMENU, $WS_GROUP, $WS_TABSTOP)) GUISetBkColor(0x00E0FFFF) ; Local $idListview = GUICtrlCreateListView("T 1 |T 2|T 3 ", 10, 10, 200, 150) ;,$LVS_SORTDESCENDING) _GuiCtrlMakeTrans(-1,100) Local $idButton = GUICtrlCreateButton("TEST", 75, 170, 70, 20) Local $idItem1 = GUICtrlCreateListViewItem("A2|col22|col23", $idListview) Local $idItem2 = GUICtrlCreateListViewItem("A1|B2|B3", $idListview) Local $idItem3 = GUICtrlCreateListViewItem("A3|col32|col33", $idListview) GUICtrlCreateInput("", 20, 200, 150) GUICtrlSetState(-1, $GUI_DROPACCEPTED) ; GUISetState(@SW_SHOW) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE ExitLoop Case $idButton Case $idListview EndSwitch WEnd Func _GuiCtrlMakeTrans($iCtrlID,$iTrans=255) Local $pHwnd, $nHwnd, $aPos, $a $hWnd = GUICtrlGetHandle($iCtrlID);Get the control handle If $hWnd = 0 then Return SetError(1,1,0) $pHwnd = DllCall("User32.dll", "hwnd", "GetParent", "hwnd", $hWnd);Get the parent Gui Handle If $pHwnd[0] = 0 then Return SetError(1,2,0) $aPos = ControlGetPos($pHwnd[0],"",$hWnd);Get the current pos of the control If @error then Return SetError(1,3,0) $nHwnd = GUICreate("", $aPos[2], $aPos[3], $aPos[0], $aPos[1], 0x80000000, 0x00080000 + 0x00000040, $pHwnd[0]);greate a gui in the position of the control If $nHwnd = 0 then Return SetError(1,4,0) $a = DllCall("User32.dll", "hwnd", "SetParent", "hwnd", $hWnd, "hwnd", $nHwnd);change the parent of the control to the new gui If $a[0] = 0 then Return SetError(1,5,0) If NOT ControlMove($nHwnd,'',$hWnd,0,0) then Return SetError(1,6,-1);Move the control to 0,0 of the newly created child gui GUISetState(@SW_Show,$nHwnd);show the new child gui WinSetTrans($nHwnd,"",$iTrans);set the transparency If @error then Return SetError(1,7,0) GUISwitch($pHwnd[0]);switch back to the parent Gui Return $nHwnd;Return the handle for the new Child gui EndFunc Edited November 1, 2016 by kklee69 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