请输入您要查询的百科知识:

 

词条 SetLayeredWindowAttributes
释义

Public Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long

函数的原型为

BOOL SetLayeredWindowAttributes(

HWND hwnd, // handle to the layered window

COLORREF crKey, // specifies the color key

BYTE bAlpha, // value for the blend function

DWORD dwFlags // action

);

其中

hWnd是透明窗体的句柄,

crKey为掩码的颜色,可以用RGB(r,g,b)来指定。

bAlpha是不透明度,取值范围是(0,255),其中0代表全透明,255代表不透明。

dwFlags是透明方式,可以取两个值:

当取值为LWA_ALPHA时,crKey参数无效,bAlpha参数有效;

当取值为LWA_COLORKEY时,窗体中的所有颜色为crKey的地方将变为透明,bAlpha参数无效。

LWA_ALPHA = 0x2

LWA_COLORKEY=0x1

也可以取两个值的组合:LWA_ALPHA Or LWA_COLORKEY。这样crKey的地方将变为全透明,而其它地方根据bAlpha参数确定透明度。

要使使窗体拥有透明效果,首先要有WS_EX_LAYERED扩展属性,方法:

先声明GetWindowLong和SetWindowLong

Dim rtn As Long

rtn = GetWindowLong(Me.hWnd, -20)

rtn = rtn Or WS_EX_LAYERED

SetWindowLong (Me.hWnd, -20, rtn)

(旧的sdk没有定义WS_EX_LAYERED,所以可以直接指定为&H80000). (VC6.0 中主函数开头加#define WS_EX_LAYERED 0x00080000即可)

WS_EX_LAYERED = &H80000

比如用C语言编windows SDK程序,实现透明窗口,在VC6.0中,开头加一句#define WS_EX_LAYERED 0x00080000

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2025/1/11 12:23:23