代码中看不到啊
多谢了

解决方案 »

  1.   

    WM_PAINT消息产生后被调用。(如果你没重载OnPaint()的话(因为里面调用了OnDraw())).
      

  2.   

    视图绘画机理
    在VC++的文档、视结构中,
    CView的OnDraw函数用于实现绝大部分图形绘制的工作。
    如果用户改变窗口尺寸,或者显示隐藏的区域,
    OnDraw函数都将被调用来重画窗口。并且,
    当程序文档中的数据发生改变时,
    一般必须通过调用视图的Invalidate(或InvalidateRect)
    成员函数来通知Windows所发生的改变,
    对Invalidate的调用也会触发对OnDraw函数的调用。
    正因为OnDraw函数被频繁调用,所以在其执行时,
    每次都刷新填充一次视图客户区域,便会使屏幕不稳定
    ,产生闪烁现象。其实在程序调用OnDraw函数之前,会触发一个Windows消息:
    WM_ERASEBKGND,以擦除视图刷新区域。在缺省情况下,
    Windows系统使用视图窗口注册时窗口类中的成员hbrBackground
    所描述的画刷来擦除屏幕,这一般会将屏幕刷新成COLOR_WINDOW
    所对应的颜色。因此,在OnDraw函数中设置背景颜色的执行
    过程是这样的:先将屏幕刷新成COLOR_WINDOW所对应的颜色,
    接着又在OnDraw函数中填充其他颜色,
    这正是产生屏幕闪烁的根本原因。
      

  3.   

    MFC底层代码的OnPaint函数调用OnDraw,所以你看不到,也就是说OnDraw总是由OnPaint来启动的。