关于窗口的重绘

jxcyly1985 2009-05-12 10:57:44
如果有一个父窗口,在这个父窗口上有很多控件,例如自定义按钮对象,自定义的画图区域对象,
当我对这些控件进行了类似InvalidateRect处理,那么对于父窗口是不是也会触发
wm_paint消息,还是说只会对控件本身产生wm_paint,

如果我在父窗口进行了类似InvalidateRect处理,那么会不会把消息对孩子传递下去,使父窗口和所有的
孩子控件都进行重新绘制。

...全文
167 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
pomelowu 2009-05-13
  • 打赏
  • 举报
回复
昨天回覆了這個帖子
http://topic.csdn.net/u/20090512/18/00417d18-5273-460c-b467-8e340b7356a5.html
對lz有點參考。:P
jxcyly1985 2009-05-13
  • 打赏
  • 举报
回复
[Quote=引用楼主 jxcyly1985 的帖子:]
如果有一个父窗口,在这个父窗口上有很多控件,例如自定义按钮对象,自定义的画图区域对象,
当我对这些控件进行了类似InvalidateRect处理,那么对于父窗口是不是也会触发
wm_paint消息,还是说只会对控件本身产生wm_paint,

如果我在父窗口进行了类似InvalidateRect处理,那么会不会把消息对孩子传递下去,使父窗口和所有的
孩子控件都进行重新绘制。
[/Quote]
还有一个问题,对于一些临时覆盖的区域,windows会保存这些区域,并在之后试图去恢复这些区域,
是不是paintstruct这个结构体里面保存了具体的无效区域的信息,假如我也只需要绘制整个显示区域
的一部分区域,在处理onpaint消息时候,是不是可以获得我的据图无效区域的大小,从而只绘制那些真正
需要重新绘制的区域,其实我想做的就是,不想在产生显示区域产生wm_paint重新整个显示区域的办法。
晒月光的青蛙 2009-05-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 cnzdgs 的回复:]
刷新子窗口通常不会导致父窗口刷新,除非子窗口在刷新过程中主动刷新其父窗口。
刷新父窗口时,如果父窗口具有WS_CLIPCHILDREN风格,则不会引起子窗口刷新,否则会刷新该区域内的子窗口。
[/Quote]
学习了
TianChong 2009-05-13
  • 打赏
  • 举报
回复
父窗口是包含子窗口的,父窗口刷新,相对应的子窗口位置也会被刷新。如果子窗口单独刷新,则不会导到父窗口刷新。这是可控行为。
迷途的书童 2009-05-12
  • 打赏
  • 举报
回复
一般, 刷新父窗口, 会跟着刷新窗口上的所有控件;

控件刷新,不会影响到父窗口;
cnzdgs 2009-05-12
  • 打赏
  • 举报
回复
刷新子窗口通常不会导致父窗口刷新,除非子窗口在刷新过程中主动刷新其父窗口。
刷新父窗口时,如果父窗口具有WS_CLIPCHILDREN风格,则不会引起子窗口刷新,否则会刷新该区域内的子窗口。
tanxs001 2009-05-12
  • 打赏
  • 举报
回复
UP,和lz一样,不能确定!
xsc2001 2009-05-12
  • 打赏
  • 举报
回复
子窗的不会向上传,但是如果你的父窗口InvalidateRect则相应区域内的窗口就会向下传递下去。

15,979

社区成员

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

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