MFC中Invalidate()函数的使用方法,求解!解决思路

MFC中Invalidate()函数的使用方法,求解!
比如,我想在窗口中把以前输出的东西清除,然后再输出我想要的东西:

  Invalidate(true);
  TextOut(0,0,str);

理论上讲它应该是先窗口重绘,把以前的东西擦除,然后再输出str的内容,但是为什么窗口是重绘了,但是TextOut的内容也被擦出了呢?
那我要是想要擦除以前输出的内容,然后再输出新的内容,该怎么弄啊?静候高手出现!

------解决方案--------------------
Invalidate()只是通知窗口去刷新,即让系统产生一个WM_PAINT消息发送到消息队列中,但并不是立即执行。代码应该放到OnPaint/OnDraw函数中去实现。
------解决方案--------------------
Invalidate(true);
TextOut(0,0,str);
==========
Invlidate并不能完成重绘,它只是触发WM_PAINT消息而已。从发出消息到响应消息是要时间的,应该是响应消息时,你的TextOut已经执行了。