词条 | 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条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。