对话框中,我屏蔽了OnPaint()里面的代码,为什么运行时,对话框还可以重画?比如我移动,放大缩小对话框,按说,这个时候程序调用OnPaint()函数,然后才可以重画,但是我把OnPaint()里面的代码全屏蔽了,怎么还可以重画啊?
  还有如果,我只删除它里面的CDialog::OnPaint(),那么我操作对话框的菜单时,客户去的图象就会闪一次(刷新一次),如果没删除,就不会。

解决方案 »

  1.   

    但是我把OnPaint()里面的代码全屏蔽了
    ========
    基类的呢?也去掉了?
      

  2.   

    我并没有删除子类的函数,只是把它里面的操作屏蔽了,它还是调用当前类的OnPaint()啊,不是吗?
      

  3.   

    OnPaint()里面有  PaintDC dc(this),这个类的构造函数里面就做了一些处理了.
      

  4.   

    我并没有删除子类的函数,只是把它里面的操作屏蔽了,它还是调用当前类的OnPaint()啊,不是吗?
    ================
    如果没有屏蔽基类如:CDialog::OnPaint()这些的函数的话,基类函数还是会运行的。
      

  5.   

    我是把OnPaint()里面的代码全部屏蔽了,当然包括CDialog::OnPaint()这个基类的的函数了!
      

  6.   

    所谓屏蔽什么意思?把里面代码全部注释掉?
    觉得对话框自己应该不再重绘了,但是其底色之类的似乎有其他回调函数控制(OnEraseBackground?),而对话框所谓的重绘其实就是绘制底色,所以就足够了。对话框上面的控件是自己绘制的,和对话框没多大关系
      

  7.   

    一般自己的对话框是来自CDialog,自己的对话框不重绘(去OnPaint)。CDialog还是会重绘,不过自己的对话框里有的控件就不会重绘了(如加一个“图片”),因为CDialog不知道你的对话框有什么。