OnPaint()函数是MFC窗口中处理“WM_PAINT”消息的默认函数,请问在其他函数中可以调用这个函数吗?
例如:
void canasFrame::OnPaint()
{
   ……
}void canasFrame::OnTimer(UINT nIDEvent)
{
   OnPaint();
   ……
   ……
}这样可以吗?如果不行应该如何来实现呢?

解决方案 »

  1.   

    直接调用好像不太常见,用Invalidate吧。
      

  2.   

    可以,建议用Invalidate(),UpdateWindow()
      

  3.   

    如何使用Invalidate()或者UpdateWindow()?
    谢谢。
      

  4.   

    借用你的代码:
    void canasFrame::OnPaint()
    {
       ……
    }void canasFrame::OnTimer(UINT nIDEvent)
    {
       Invalidate();//直接调用既可
       ……
       ……
    }
      

  5.   

    可是OnPaint()在OnTimer()里并没有出现啊。请问Invalidate();实现了什么功能?在OnTimer()里不用出现OnPaint()也可以吗?
      

  6.   

    你在this->Invalidate()后加一个this->UpdateWindow();试试!或者this->Invalidate(TRUE);
      

  7.   

    调用Invalidate();是将程序从新初始化吗?
      

  8.   

    到底怎么用嘛
    哎,知道就详细说说,不要老是问我装了MSDN了吗?之类的。
      

  9.   

    OnPaint()在系统的空闲时会自动调用,你看看msdn不就明白了吗,调用Invalidate(),也就是间接的调用OnPaint.
      

  10.   

    调用Invalidate()就是使他无效,系统会重画,发出wm_paint消息,然后调用你写的onpain
      

  11.   

    我这里随便在请教一下,调用Invalidate()后,除了wm_paint消息之外,系统还会发出哪些消息呢?
      

  12.   

    在其他函数发出WM_PAINT消息~!~!~