当前位置: 代码迷 >> PB >> 关于窗口透明的有关问题。
  详细解决方案

关于窗口透明的有关问题。

热度:93   发布时间:2016-04-29 06:50:44.0
关于窗口透明的问题。。
open事件:
SetWindowulong(Handle(This), GWL_EXSTYLE, WS_EX_LAYERED)
SetLayeredWindowAttributes(Handle(This), 0, Char(255), LWA_COLORKEY)


全局:
Function ulong SetLayeredWindowAttributes(ulong hWnd , long crKey , Character bAlpha ,long dwFlags) library"user32.dll" alias for "SetLayeredWindowAttributes;Ansi" 
FUNCTION ulong SetWindowulong(ulong hwnd,ulong nIndex,ulong dwNewLong) LIBRARY "user32.dll" ALIAS FOR "SetWindowLongA" 

局部:
ULONG WS_EX_LAYERED = 524288
LONG LWA_COLORKEY = 1
LONG LWA_ALPHA = 2
ULONG GWL_EXSTYLE = -20

把背景弄成“黑色”可以实现透明的效果
但是窗口默认的不是黑色是“button face”我想知道需要改写什么达到透明的效果。。

------解决方案--------------------
SetLayeredWindowAttributes的第二个参数是‘透明化颜色’,你改成你需要透明的颜色就可以了,窗体中可以改成这样

SetWindowulong(Handle(This), GWL_EXSTYLE, WS_EX_LAYERED)
SetLayeredWindowAttributes(Handle(This), this.BackColor, Char(255), LWA_COLORKEY)
  相关解决方案