单文档
我在一个菜单的事件函数里面写,是在CMyView类this->Invalidate(true);
CClientDC dc(this);
dc.TextOut(0 ,0, "sss");结果客户区没有输出"sss"
但是注释掉this->Invalidate(true);,就显示了"sss"
这是为什么?

解决方案 »

  1.   

    Invalidate是刷新窗口,通过PostMessage的方式,不是立即执行,所以是在TextOut之后才刷新的,TextOut输出的文字被刷掉了。
      

  2.   

    1楼正解,不光是TextOut,画出的图也会被刷掉
      

  3.   

    PostMessage方式是什么意思?是不是要等我的这个函数执行完了,才发送WM_PAINT消息?
      

  4.   

    有没有办法让Invalidate立即执行呢?
      

  5.   

    Post消息就是要等到程序主动去取消息时才会执行。调用UpdateWindow可以让窗口立即响应刷新。