windows透明窗体(可控透明度)代码

来源:互联网 发布:数据库管理规范 编辑:程序博客网 时间:2024/06/08 23:46

////////////////////////透明窗口,开始///////////////
SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE,GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)^1000000);
// ::SetLayeredWindowAttributes(this->GetSafeHwnd(),0,100,0);
HINSTANCE hInst= LoadLibraryA("User32.dll");
if(hInst)
{
    typedef BOOL (WINAPI *MYFUNC)(HWND,COLORREF,BYTE,DWORD);

    MYFUNC fun=NULL;
    fun=(MYFUNC)GetProcAddress(hInst,"SetLayeredWindowAttributes");
    if(fun) fun(this->GetSafeHwnd(),0,230,2);
    FreeLibrary(hInst);
}
////////////////////结束////////////////////////
 
当取值为LWA_ALPHA时,crKey参数无效,bAlpha参数有效;

         当取值为LWA_COLORKEY时,bAlpha参数有效而窗体中的所有颜色为crKey的地方将
变为透明。        LWA_ALPHA = 0x2        LWA_COLORKEY=0x1              
也可以取两个值的组合:LWA_ALPHA Or LWA_COLORKEY。这样crKey的地方将变为全透明,
而其它地方根据bAlpha参数确定透明度