rt 3ks

解决方案 »

  1.   

    CView中只有OnDraw,没有OnPaint呀。
      

  2.   

    我明白了,我看了cview的源码,知道内部的机制了!
      

  3.   

    OnDraw()是与CDocument类相关的,通常当CDocument中的数据发生改变时候,会通知CView也进行相应的改变,这时候Framework会自动调用OnDraw.
    而OnPaint的范围很小,仅仅只是CWnd需要重绘制的时候才会调用.有时候,可能OnPaint和OnDraw会有交集!
      

  4.   

    我觉得 还是 : kingcom_xu(刀是用来杀人的!) 说的有道理你可以试试,当你重载了cview类的OnPaint()函数时,OnDraw()是不会被调用的
      

  5.   

    void  CViw::OnPaint()
    {
    CPaint  dc(this);
    OnPrepareDC(&dc);
    OnDraw(&dc);
    }
    可以在Visual c++的vc\mfc\src\viewcore.cpp中查看
    OnPain()是CWnd的成员函数,也是WM_PAINT消息的响应函数
    OnDraw是CView的成员函数,但并非消息响应函数
    移动覆盖在窗口上的对话框或窗口,菜单拉下又放开,改变窗口大小等,都会调用OnPaint