今天找到的一个代码,透明窗体的实现
程序运行用,窗体可以设置透明度,感觉挺不错的,以下是代码和解释用vc6,创建一个居于对话框的应用程序,
在OnInitDialog中添加代码:
// TODO: Add extra initialization here
SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE,
GetWindowLong(this->GetSafeHwnd(),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(this->GetSafeHwnd(),0,128,2);//第三个参数(128)不要取得太小,0为完全透明
FreeLibrary(hInst);
}
}
我就注释2个,其他如果有看不懂的函数,自己区查看MSDN吧,我就不详细说了 我昏。这个东西能卖2UB 3个API罢了。。。
SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE,
GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)^0x80000);
SetLayeredWindowAttributes(0,dwAlpha,2);
//dwAlpha 是透明度
VS2008 sp1 的对话框可以直接用。
页:
[1]