热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

一个关于DDraw的简单问题,50分!

问题很简单: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 个解决方案

#1


补充:我指的ReSize窗体,就是指用鼠标拖动窗体边框,改变窗体大小.我在桌面属性里设置了"拖动时显示窗体内容".

闪烁只在缩放窗体时出现,移动时没有.

闪烁就是:窗体内容大体上是指定的填充色,但是上上下下有水平白条闪烁.

#2


写一个OnPrepareDC函数就可以了

#3


主要是要在系统调用OnDraw函数前面不要更新屏幕,还有就是不对WM_ERASEBKGND进行处理,覆盖CWND的OnEraseBkgnd函数,这个函数负责调用OnDraw前面更新窗口背景

#4


按您的说法,处理WM_ERASEBKGND就已经解决问题了。
唉,本以为……5555……本以为自己水平还可以,可是怎么上天还生了个XCOOL呢?郁闷中……(玩笑,别介意,是在赞美)

#5


我本来差点就想用DDraw的覆盖图功能了。可是您知道那覆盖图可不是那么好玩的!多亏您指明了捷径,谢谢谢谢~

#6


请笑纳

推荐阅读
author-avatar
憐海周_472_151
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有