关于控件的透明~~~~~~~~

bigant888 2003-08-11 06:09:00
在一个对话框中,设置背景为一张位图后, 处理对话框的 WM_CTLCOLOR 返回一个NULL_BRUSH 可以使 控件 透明

但现在有这些问题:

1. 对于CStatic透明之后,如果CString的内容改变了,原先的内容还在,即不能更新!

2. 如何实现 CTreeCtrl, CListBox ,CSliderCtrl 控件透明!返回NULL_BRUSH,
不能使控件完全透明.

哪位大哥帮我解决一下,最好有本应的代码, 分不够再加!!!!!!!
谢谢!!!!!!!!!!!!!!!!
...全文
51 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
bigant888 2003-08-15
  • 打赏
  • 举报
回复
最后up一下,抢分的快来啊~~~~~~~~~
bigant888 2003-08-15
  • 打赏
  • 举报
回复
对于一般控件的可以,但对于 CTreeCtrl, CListBox ,CSliderCtrl 不行的
reval 2003-08-15
  • 打赏
  • 举报
回复
重载OnCtlColor
...
pDC->SetBkMode(TRANSPARENT); // Set the control transparent
...
wanderman 2003-08-13
  • 打赏
  • 举报
回复
ctlcolor处理的控件是有限的,当然不能所有控件都处理
bigant888 2003-08-13
  • 打赏
  • 举报
回复
to 回复人: lyljp(小李) ( ) 信誉:99 可以了,谢谢!


哪位可以说一下第2个问题的一些思路???
谢谢!!!!!!!!!!!
xly310 2003-08-12
  • 打赏
  • 举报
回复
得到你CStatic的Rect,然后InvalidateRect,如果对话框背景有闪烁,就在OnEraseBkgnd中把return CDialog::OnEraseBkgnd(pDC);注释掉,换成return TRUE;
lyljp 2003-08-12
  • 打赏
  • 举报
回复
取得Static的位置rect,然后擦除此区域的背景,即可。如下:

CWnd *pWnd=GetDlgItem(IDC_STATIC1);//取得静态控件的窗口指针
pWnd->SetWindowText("dkjfkdsfjklsjf\n\rkdjfklsfjsk");
CRect rect;
pWnd->GetWindowRect(rect);//取得控件在屏幕的位置
ScreenToClient(rect);//取得控件在对话框上的位置
InvalidateRect(rect,TRUE);//使对话框该区域无效
bigant888 2003-08-12
  • 打赏
  • 举报
回复
上面我加了,好像没有用,

哪位大哥知道第2个问题怎么实现???~~~~~~
bigant888 2003-08-11
  • 打赏
  • 举报
回复
up,有人帮我吗?
netfyee 2003-08-11
  • 打赏
  • 举报
回复
不会,学习!帮你up

15,979

社区成员

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

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