怎么把DIALOG的背景色设为透明?

iamwiner 2004-11-22 10:01:23
在对话框上输出一些文字,
再把DIALOG背景色设为透明,
使别人感觉不到对话框的存在,
只看得到文字!
...全文
674 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
niuniutop 2004-11-24
  • 打赏
  • 举报
回复
那么怎么把CRORMVIEW变透明呢?
oyljerry 2004-11-22
  • 打赏
  • 举报
回复
SetLayeredWindowAttributes就是把显示器的透明度改变了,文字也就变成透明的了
iamwiner 2004-11-22
  • 打赏
  • 举报
回复
透明是透明的,但我输出的文字也变透明了,什么都看不到了!
pomelowu 2004-11-22
  • 打赏
  • 举报
回复
//加入WS_EX_LAYERED扩展属性
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,0,2); // 第三个参数就是透明度
FreeLibrary(hInst);
}
pomelowu 2004-11-22
  • 打赏
  • 举报
回复
Windows 2000以上用:SetLayeredWindowAttributes
在OnInitDialog中加入:
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,0,2); // 第三个参数就是透明度
FreeLibrary(hInst);
}
iamwiner 2004-11-22
  • 打赏
  • 举报
回复
OK明白了谢谢
pomelowu 2004-11-22
  • 打赏
  • 举报
回复
忘了这个了,改一下
if(fun)fun(this->GetSafeHwnd(),cr,255,1);
cr是一个COLORREF,颜色值是Dialog的背景色。
如果还不行,就先贴一张纯色的位图到Dialog上(注意不能和字体颜色一样),然后用上面的把位图的颜色设置为透明。
iamwiner 2004-11-22
  • 打赏
  • 举报
回复
那有什么用呢?

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧