用vc6建立一个MFC SDI工程
1 当选择Document/View支持时,vc自动生成的View里的重画函数为OnDraw
2 当不选择Document/View支持时,vc生成的View里的重画函数为OnPaint为什么会有这种区别?为什么在2下不生成OnDraw?

解决方案 »

  1.   

    "深入浅出MFC"(第二版电子书,来自侯捷网站)第684页解释的很简洁:
    OnDraw中一般是通用绘图代码,常常是设备无关的。会被OnPrint和OnPaint调用。
    OnPaint中是一般显示相关代码加上调用OnDraw。例如,如果OnPaint中先判断窗口无需重画,则不调用OnDraw。
    CView类有OnPaint函数,如果不重载CView的OnPaint,则缺省实现OnPaint调用OnDraw,所以如果你重载OnPaint,而没有在OnPaint里边调用CView::OnPaint或者OnDraw的话,OnDraw就不会被调用。