使用Setlayeredwindowattributes函数可以实现透明窗口。之前使用SetWindowLong函数,使窗口拥有WS_EX_LAYERED扩展属性。Setlayeredwindowattributes函数的原型为 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参数无效。
使用Setlayeredwindowattributes函数可以实现透明窗口。之前使用SetWindowLong函数,使窗口拥有WS_EX_LAYERED扩展属性。Setlayeredwindowattributes函数的原型为
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参数无效。
然后子窗口可以在Blend一张半透明的PNG作为遮罩。