用SetLayeredWindowAttributes实现窗口透明
2009-04-03 15:42
369 查看
BOOL SetLayeredWindowAttributes(
HWND hwnd,
COLORREF crKey,
BYTE bAlpha,
DWORD dwFlags
);
hwnd是透明窗体的句柄,
crKey为颜色值,
bAlpha是透明度,取值范围是[0,255],
dwFlags是透明方式,可以取两个值:
当取值为LWA_ALPHA时,crKey参数无效,bAlpha参数有效;
当取值为LWA_COLORKEY时,Alpha参数有效而窗体中的所有颜色为crKey的地方将变为透明。
LWA_ALPHA = 0x2
LWA_COLORKEY=0x1
也可以取两个值的组合:LWA_ALPHA Or LWA_COLORKEY。这样crKey的地方将变为全透明,而其它地方根据bAlpha参数确定透明度。
要使使窗体拥有透明效果,首先要有用SetWindowLong设置WS_EX_LAYERED扩展属性
WS_EX_LAYERED = 0x80000
实例代码:
int main(int argc, char* argv[])
{
HWND hWnd = 0;
hWnd = FindWindowEx(hWnd, 0, "WindowClassName", NULL);
if (!hWnd)
{
printf("Not Find!");
}
SetWindowLong(hWnd,GWL_EXSTYLE,
GetWindowLong(hWnd,GWL_EXSTYLE)^0x80000);
HINSTANCE hInst = LoadLibrary("User32.DLL");
if(hInst)
{
typedef BOOL (WINAPI *MYFUNC)(HWND,COLORREF,BYTE,DWORD);
MYFUNC fun = NULL;
//取得SetLayeredWindowAttributes函数指针
fun=(MYFUNC)GetProcAddress(hInst, "SetLayeredWindowAttributes");
if(fun)fun(hWnd,0,128,2);
FreeLibrary(hInst);
}
return 0;
}
HWND hwnd,
COLORREF crKey,
BYTE bAlpha,
DWORD dwFlags
);
hwnd是透明窗体的句柄,
crKey为颜色值,
bAlpha是透明度,取值范围是[0,255],
dwFlags是透明方式,可以取两个值:
当取值为LWA_ALPHA时,crKey参数无效,bAlpha参数有效;
当取值为LWA_COLORKEY时,Alpha参数有效而窗体中的所有颜色为crKey的地方将变为透明。
LWA_ALPHA = 0x2
LWA_COLORKEY=0x1
也可以取两个值的组合:LWA_ALPHA Or LWA_COLORKEY。这样crKey的地方将变为全透明,而其它地方根据bAlpha参数确定透明度。
要使使窗体拥有透明效果,首先要有用SetWindowLong设置WS_EX_LAYERED扩展属性
WS_EX_LAYERED = 0x80000
实例代码:
int main(int argc, char* argv[])
{
HWND hWnd = 0;
hWnd = FindWindowEx(hWnd, 0, "WindowClassName", NULL);
if (!hWnd)
{
printf("Not Find!");
}
SetWindowLong(hWnd,GWL_EXSTYLE,
GetWindowLong(hWnd,GWL_EXSTYLE)^0x80000);
HINSTANCE hInst = LoadLibrary("User32.DLL");
if(hInst)
{
typedef BOOL (WINAPI *MYFUNC)(HWND,COLORREF,BYTE,DWORD);
MYFUNC fun = NULL;
//取得SetLayeredWindowAttributes函数指针
fun=(MYFUNC)GetProcAddress(hInst, "SetLayeredWindowAttributes");
if(fun)fun(hWnd,0,128,2);
FreeLibrary(hInst);
}
return 0;
}
相关文章推荐
- (转)xp下实现窗体透明特效/异形窗口SetLayeredWindowAttributes函数
- 用SetLayeredWindowAttributes实现窗口透明
- 使用SetLayeredWindowAttributes API 实现透明窗口
- 透明窗口(窗口上面文字图片等内容不透明)的实现(使用SetLayeredWindowAttributes API函数)
- 窗体透明效果的实现 渐进式等SetLayeredWindowAttributes的用法
- 使用SetLayeredWindowAttributes函数设置窗口透明色与透明度
- VC中实现透明窗体--SetLayeredWindowAttributes
- WinAPI: SetLayeredWindowAttributes - 设置窗口的透明
- VC++ 实现整个对话框透明的效果SetLayeredWindowAttributes
- VC6.0使用SetLayeredWindowAttributes实现透明效果
- mfc的窗口透明度调整(SetLayeredWindowAttributes函数)
- VB 窗口透明度设置-WindowsAPI-SetLayeredWindowAttributes
- 设置windows窗口半透明(使用SetLayeredWindowAttributes API函数)
- SetLayeredWindowAttributes 创建不规则窗口(此处为椭圆)
- 透明化窗口SetLayeredWindowAttributes
- UpdateLayeredWindow实现自定义透明窗口
- WinAPI透明窗体SetLayeredWindowAttributes
- 透明化窗口SetLayeredWindowAttributes
- 工作问题积累(八)SetLayeredWindowAttributes(设置透明窗体)
- 透明化窗口SetLayeredWindowAttributes