OnPaint()与OnDraw()这两个函数有什么区别?多谢!

解决方案 »

  1.   

    http://blog.csdn.net/tracing/archive/2008/08/21/2806156.aspx
      

  2.   

    http://blog.csdn.net/tracing/archive/2008/08/21/2806156.aspx这个说的很明白了,建议收藏
      

  3.   

    MFC的viewcore.cpp中的源代码
    void CView::OnPaint()

        CPaintDC dc(this);
        OnPreparDC(&dc);
         OnDraw(&dc); 
    }
    从以上代码中很容易看出,CView的WM_PAINT消息响应函数OnPaint()会自动调用CView::OnDraw(),作为开发者,可以通过简单的OnDraw()的重载实现对WM_PAINT的处理
      

  4.   

    CView的WM_PAINT消息响应函数OnPaint()会自动调用CView::OnDraw()
      

  5.   

    OnPaint 只重绘无效区
    OnPaint 重绘所有要重绘的区域
      

  6.   

    简单的说OnDraw()是被OnPaint,OnPrint等多个绘图函数调用的。
    OnDraw()里面实现一些与显示设备无关联的绘图语句。
    而OnPaint里面除了调用OnDraw()还有准备一些与显示器相关的设置代码
      

  7.   

    只要是派生自CWnd就能响应OnPaint消息,必须派生自CView才有OnDraw虚函数。
      

  8.   

    void CView::OnPaint()

        CPaintDC dc(this);
        OnPreparDC(&dc);
        OnDraw(&dc); //调用了OnDraw
    }OnPaint()是CWnd的类成员,同时负责响应WM_PAINT消息。OnDraw()是CVIEW的成员函数,并且没有响应消息的功能。