VC实现半透明对话框

来源:互联网 发布:严重程度评估矩阵图 编辑:程序博客网 时间:2024/05/22 03:32
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(),RGB(255,255,255),128,2);
           FreeLibrary(hInst);
        }
这是网上的一段代码,加到OnInitDialog()里面可以达到透明效果;

fun应该是个函数fun=(MYFUNC)GetProcAddress(hInst, "SetLayeredWindowAttributes");这里又给fun赋值;

fun的
第二个参数是 设置透明色
第三个参数是 设置不透明度  255就是不透明  0就是全透明
第四个参数  是一个方式选择  1表示让第二个参数的颜色透明此时第三个参数无效
                            2表示全窗口透明此时第二个参数无效