Invalidate(true)的问题

demon3434 2009-01-28 09:29:43
单文档
我在一个菜单的事件函数里面写,是在CMyView类

this->Invalidate(true);
CClientDC dc(this);
dc.TextOut(0 ,0, "sss");

结果客户区没有输出"sss"
但是注释掉this->Invalidate(true);,就显示了"sss"
这是为什么?
...全文
50 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
demon3434 2009-01-28
  • 打赏
  • 举报
回复
果然,换成UpdateWindow就OK了
cnzdgs 2009-01-28
  • 打赏
  • 举报
回复
Post消息就是要等到程序主动去取消息时才会执行。调用UpdateWindow可以让窗口立即响应刷新。
ding1188 2009-01-28
  • 打赏
  • 举报
回复
有没有办法让Invalidate立即执行呢?
[Quote=引用 1 楼 cnzdgs 的回复:]
Invalidate是刷新窗口,通过PostMessage的方式,不是立即执行,所以是在TextOut之后才刷新的,TextOut输出的文字被刷掉了。
[/Quote]
demon3434 2009-01-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 cnzdgs 的回复:]
Invalidate是刷新窗口,通过PostMessage的方式,不是立即执行,所以是在TextOut之后才刷新的,TextOut输出的文字被刷掉了。
[/Quote]
PostMessage方式是什么意思?是不是要等我的这个函数执行完了,才发送WM_PAINT消息?
dxk01 2009-01-28
  • 打赏
  • 举报
回复
1楼正解,不光是TextOut,画出的图也会被刷掉
cnzdgs 2009-01-28
  • 打赏
  • 举报
回复
Invalidate是刷新窗口,通过PostMessage的方式,不是立即执行,所以是在TextOut之后才刷新的,TextOut输出的文字被刷掉了。

15,978

社区成员

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

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