我在Formview上做一个监控图,鼠标移动时需要多次重绘,由于反差较大,引起了强烈的闪烁,我用BitBlt直接从内存贴图取代重绘解决了闪烁问题.但若用之前重绘的方法则解决不了,如下: 一开始我用双缓冲使InvalidateRect()时从内存中贴图,这样的确闪烁减轻了很多,但仍有闪烁,可以感觉出来是重绘时FormView刷了一遍默认的背景,于是我希望通过OnEraseBKgnd()直接用Return返回,可是ClassWizard中却找不到WM_ERASEBKGND消息,我查了资料说是可以自己添加上,我添加了这个函数的消息映射,但跟踪却发现执行不到这个函数,显然不起作用,我发现重绘时系统会进入OnCtlColor()函数,我让其返回一个透明的画刷也不能解决.
我的第一个疑问就是为什么FormView中没有OnEraseBKgnd()这个虚函数?而其它的View类,凡是CWnd类下的都有,而CFormView却例外呢?如何让系统重绘时不进行默认背景的重绘以解决闪烁的问题呢?
我的第一个疑问就是为什么FormView中没有OnEraseBKgnd()这个虚函数?而其它的View类,凡是CWnd类下的都有,而CFormView却例外呢?如何让系统重绘时不进行默认背景的重绘以解决闪烁的问题呢?
闪烁的问题仍然没有解决,FormView上有很多编辑框控件,我在OnPaint()函数里创建了一个DC,这个DC在内存中绘制了FormView正中间的监控图,这样从内存贴图时也就只有监控图那部分了,当鼠标移动时中间的监控图部分是不闪了,可是编辑框的闪烁却又不止了,我想应该用这个DC在内存中也把那些编辑框等绘制进去,请问如何实现呢?谢谢了.