请高手讲解一下 OnDraw 和 OnPaint 的不同。越多越好,谢谢!

解决方案 »

  1.   

    简单地说一下吧,具体的问题你得去看书,看帮助。    CView中对在显示器上绘制图形文字消息进行处理的函数是OnPaint(),对打印消息进行响应的函数是OnPrint().  但两个函数中要draw的内容其实是一样的,仅仅是输出的媒介不同而已。所以,两都都调用OnDraw()进行实际的工作。    OnPaint()和OnPrint()中都先对CDC进行初始化后,把它传给同一个OnDraw(). OnDraw()中用样的代码进行绘图,根据CDC的不同,分别输出到显示器、打印机。
      

  2.   

    其实是这个样子的,你自己做的视类再处理WM_PAINT消息的时候,会调用其父类CView类的OnPaint函数,而CView类的OnPaint函数会调用CView的OnDraw,但是如果重载了OnDraw以后,调用的就是你自己的是类的OnDraw函数,所以这一路上都是一个OnPaint消息在作怪,如果在你的是类中重载了OnPaint函数的话,WM_PAINT消息不再被传递,这事业就不再调用你的是类的OnDraw了。