诚城 发表于 2009-4-5 21:08

今天找到的一个代码,透明窗体的实现

程序运行用,窗体可以设置透明度,感觉挺不错的,以下是代码和解释
用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吧,我就不详细说了

helpmsg 发表于 2009-8-14 04:12

我昏。这个东西能卖2UB

TheCjw 发表于 2009-8-14 23:22

3个API罢了。。。
SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE,
        GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)^0x80000);

SetLayeredWindowAttributes(0,dwAlpha,2);
//dwAlpha 是透明度

VS2008 sp1 的对话框可以直接用。
页: [1]
查看完整版本: 今天找到的一个代码,透明窗体的实现