菜鸟求解!!!

singledon 2010-11-12 03:16:07
为什么我在view类中调用了this->UpdateWindow();客户区确不会发生重绘显示我需要的信息,而当我拉动改变窗口大小的时候确显示了我需要的信息??求解这是为什么??
...全文
71 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Daveee 2010-11-15
  • 打赏
  • 举报
回复
MSDN上如是说:
The client area is marked for painting when the next WM_PAINT message occurs. The region can also be validated before a WM_PAINT message occurs by the ValidateRect method.
由上可知它和 UpdateWindow区别在于UpdateWindow的作用是使窗口立即重绘。调用Invalidate等函数后窗口不会立即重绘,这是由于WM_PAINT消息的优先级很低,它需要等消息队列中的其它消息发送完后才能被处理。调用UpdateWindow函数可使WM_PAINT被直接发送到目标窗口,从而导致窗口立即重绘。
muzizongheng 2010-11-15
  • 打赏
  • 举报
回复
来玩了,

Invalidate()产生wm_paint消息, 但是paint消息优先级不高,

调用UpdateWindow()后 , 程序立即处理此消息。
tt2com 2010-11-15
  • 打赏
  • 举报
回复
解决了结贴给分啊。郁闷咋都是0结贴的
singledon 2010-11-12
  • 打赏
  • 举报
回复
谢谢大家,以如一楼所言解决问题了~哈哈
ouyh12345 2010-11-12
  • 打赏
  • 举报
回复
UpdateWindow不会立即刷新,而是等待WM_PAINT
tt2com 2010-11-12
  • 打赏
  • 举报
回复
楼上二位大神都是正解
向立天 2010-11-12
  • 打赏
  • 举报
回复
UpdateWindow不会激活OnPaint函数
而拉动窗口的时候会
你按一楼说的调用Invalidate试试
疯狂石头_ 2010-11-12
  • 打赏
  • 举报
回复
this->Invalidate();//刷新客户区
this->UpdateWindow();

15,979

社区成员

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

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