唐僧的团队:VC窗口透明的方法 - 日志 - 李鸿儒 - 慧聪社会 - shehui.hc360.com
VC窗口透明的方法
VC窗口透明的方法(SetLayeredWindowAttributes)。是一种比较好的办法。
在WINDOWS版中要要求5.0以上就可以,不知道为什么微软件要求这样做。
不过在WINDOWS VISTA中将经常使。
直接使用源代码吧:
// 添加透明扩展样式
SetWindowLong(this->GetSafeHwnd(), GWL_EXSTYLE, GetWindowLong(this->GetSafeHwnd(), GWL_EXSTYLE)^0x80000);
// 添加库
HINSTANCE hInst = LoadLibrary("User32.DLL");
if(hInst)
{
typedef BOOL (WINAPI *ShowLayer)(HWND,COLORREF,BYTE,DWORD);
ShowLayer fun = NULL;
// 读取函数指针
fun = (ShowLayer)GetProcAddress(hInst, "SetLayeredWindowAttributes");
if (fun)
fun(this->GetSafeHwnd(), 0, 235, 2);
FreeLibrary(hInst);
}
// 函数原型
BOOL SetLayeredWindowAttributes(
HWND hwnd, // 窗口
COLORREF crKey, // 颜色键
BYTE bAlpha, // alpha值
DWORD dwFlags // 透明方法
);
//透明方法只有两种:LWA_COLORKEY=1为使用颜色键。LWA_ALPHA=2为使用alpha值。
//两种值只能取一种。前面的值就是实际值