OnEraseBkgnd和OnPaint()有什麽区别?我想把对话框用刷子上色,这两个函数都可以实现呀,MSDN上写的我理解的不是很清楚菜鸟菜鸟~~~~呵呵~

解决方案 »

  1.   

    OnEraseBkgnd只是设定需要重新绘制的区域,并不执行绘制的动作,而OnPaint则是负责绘制的。
      

  2.   

    这两个函数哪个占用的系统资源小点?在实现同样效果的情况下,是不是用OnEraseBkgnd更好些?我在SDI上放了一个CMyBar(重载自CDialogBar),并重载了OnPaint把Mybar染成蓝色,qq不是有自动隐藏在桌面上的功能吗,当鼠标到他隐藏的位置时他就不紧不慢的显示出来,问题来了,qq显示时经过我的Mybar后,上面的按钮控件全消失了,只剩一片蓝色
    我决定不用OnPaint了,又重载了OnEraseBkgnd,这回qq显示出来再隐藏回去,MyBar上一切正常。。虽然问题解决了,但实在不知道为什麽。。希望大侠们给我讲讲。重申本人是菜鸟。别笑话我~~~~~~~~~~~
      

  3.   

    OnEraseBkgnd是在窗体背景被擦除的时候触发,而OnPaint是只要有WM_PAINT消息就会被触发
      

  4.   

    那我遇到的问题怎末解释呢?qq滑过我的窗体后触发了OnPaint,把其他的控件覆盖了?是这个原因吗?如果是该怎麽解决?