作者:憐海周_472_151 | 来源:互联网 | 2023-02-01 12:30
问题很简单:1,我建立了一个单文档界面程序;2,以NORMAL级别创建了一个DDraw对象;3,创建一个主图面和一个剪裁器;3,在CView的OnDraw函数里,向主图面以单一颜色填充
问题很简单:
1,我建立了一个单文档界面程序;
2,以NORMAL级别创建了一个DDraw对象;
3,创建一个主图面和一个剪裁器;
3,在CView的OnDraw函数里,向主图面以单一颜色填充.
问题在于:当ReSize窗口时,CView内容闪烁的厉害,看起来好象是:窗口先绘制自己,然后才轮到我的DDraw图面对象的Blt函数绘制图面.这样一来,窗体先为自己画一个白色底面,然后我的DDraw图面对象的Blt函数再向窗体填充颜色.当ReSize窗体时,看起来就是白色和填充色交替出现,只不过很快,但是也是闪烁的.
怎么能不让它闪烁?怎么能不让CView绘制自己的白色底面?我想让我的图面完全接管CView来绘制内容.
能够解决问题的回复,立刻给分.谢谢,谢谢.
6 个解决方案
补充:我指的ReSize窗体,就是指用鼠标拖动窗体边框,改变窗体大小.我在桌面属性里设置了"拖动时显示窗体内容".
闪烁只在缩放窗体时出现,移动时没有.
闪烁就是:窗体内容大体上是指定的填充色,但是上上下下有水平白条闪烁.
主要是要在系统调用OnDraw函数前面不要更新屏幕,还有就是不对WM_ERASEBKGND进行处理,覆盖CWND的OnEraseBkgnd函数,这个函数负责调用OnDraw前面更新窗口背景
按您的说法,处理WM_ERASEBKGND就已经解决问题了。
唉,本以为……5555……本以为自己水平还可以,可是怎么上天还生了个XCOOL呢?郁闷中……(玩笑,别介意,是在赞美)
我本来差点就想用DDraw的覆盖图功能了。可是您知道那覆盖图可不是那么好玩的!多亏您指明了捷径,谢谢谢谢~