MFC控件重绘残留或重叠问题!!请大神解答!

两水先木示 2017-11-17 10:47:38
使用ModifyStyle(0,WS_CLIPCHILDREN)之后,使窗口刷新时忽略控件刷新,但是这时出现了一个问题,那就是控件不会重绘,例如:控件背景会出现重叠内容,特别是组框,列表控件没什么事,反正控件透明背景都会重叠一些上下文的内容,不知道如何解决。下面有一个截图:组框+列表控件,我使用的是Invalidate(false)刷新

组框周围的内容就被弄乱了,本来样子是这样的

上百度搜了2个函数InvalidateRect 还有一个是InvalidateRgn 第一个我尝试用了一下,使用句柄获取Rect之后再用ScreenToClient获取真正的位置,一样没用,我也验证了rect获取的结果是正确的,代码是放在OnVScroll滚动条响应里面的.

...全文
915 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2017-11-22
  • 打赏
  • 举报
回复
榜样的力量!
X366ING 2017-11-22
  • 打赏
  • 举报
回复
重绘的问题,建议看看赵4老师给的链接里面的内容
sichuanwww 2017-11-22
  • 打赏
  • 举报
回复
没味儿 2017-11-22
  • 打赏
  • 举报
回复
建议CListCtrl 只绘 CListCtrl 组合框的自绘则由组合框自身去绘。你可能是想列表控件带组合框功能,那么把自绘了的列表控件类与组合框组成一新类 如: class NewListCtrl { private: CMyListCtrl m_list; CMyComboBox m_combo; public: ...... };
两水先木示 2017-11-21
  • 打赏
  • 举报
回复
不错,这个控件,可是与我的问题无关啊。
两水先木示 2017-11-18
  • 打赏
  • 举报
回复
想要知道那个rect的范围 要自己去搞到手啊,所以我怎么刷新都只是刷新那个组框文本而已 。。
两水先木示 2017-11-18
  • 打赏
  • 举报
回复
MFC的组框获取的rect真的只是那个文本范围而已!!卧了个去,问题无法解决的赶脚,我不用组框了。。直接用文本
两水先木示 2017-11-18
  • 打赏
  • 举报
回复
why?控件重绘和当前窗口刷新冲突么?这样设置一样是要让控件显示于当前窗口上的不是吗,也一样会受到全刷新影响,因为我设置了一个背景图的,背景图会在刷新的时候,残留在组框内容区域。组框内容区域是透明的,有没有一个容易简单的解决方法。。
zgl7903 2017-11-18
  • 打赏
  • 举报
回复
建议 控件重绘,从控件派生新类处理,不要在父窗口中操作

15,979

社区成员

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

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