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表示全窗口透明此时第二个参数无效
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表示全窗口透明此时第二个参数无效

这段代码展示了如何在VC中实现半透明对话框的效果。通过调用`SetWindowLong`改变窗口样式,并利用`LoadLibrary`和`GetProcAddress`获取`SetLayeredWindowAttributes`函数指针,设置透明色和不透明度,最终实现透明效果。在`OnInitDialog`中添加此代码,可以调整对话框的透明度和透明颜色。

5549

被折叠的 条评论
为什么被折叠?



