SDK编程,使用InvalidateRect函数快速刷新界面,界面突然就变成全白色是为什么?

SDK方式编写一个2D贴图游戏,使用双重缓冲,背景是用bitblt函数贴上去的,但是实际测试当使用InvalidateRect函数每秒刷新10次界面的时候,过3秒左右界面... SDK方式编写一个2D贴图游戏,使用双重缓冲,背景是用bitblt函数贴上去的,但是实际测试当使用InvalidateRect函数每秒刷新10次界面的时候 ,过3秒左右 界面就会突然变成全白色 而且也恢复不过来了,这是为什么 ? 展开
 我来答
bhtzu
2013-10-24 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4200万
展开全部
先用Invalidate()函数替换InvalidateRect,全窗口刷新看看是不是白屏。
如果是,那么问题出在界面更新,注销定时器刷新代码,看看最小化窗口再还原是不是白屏,如果是,具体检查WM_PAINT的响应代码吧,没代码没法说。
如果不是。。。就不好玩了,这个很可能是其它函数代码造成的内存错误之类的造成的。
更多追问追答
追问
Invalidate()这个好像是MFC提供的函数,SDK没有关于这个函数的定义,最小化的情况下应该还是在刷新 但是 却没有白屏,最大化 依旧是刷新3秒左右 使用bitblt函数贴上去的图直接就变白色了,但是 我的图片因为不够大,所以最大化情况下右下角没图片的地方是默认的灰色背景,这部分却没受影响。
追答
定时器里面,改成向窗口发送WM_PAINT消息试试效果。

你测试的和我说的有差别。我的意思是,暂停定时器代码,然后运行之后就没有定时刷新了,这个时候,最小化窗口再还原,窗口显示是否正常。
锁骨的鱼
2013-10-24 · 超过29用户采纳过TA的回答
知道答主
回答量:73
采纳率:0%
帮助的人:51.8万
展开全部
贴代码...
追问
我把函数封装到dll里面了,没办法贴代码 只能说大体思路是 初始化的时候 创建一个定时器,定时器里面每0.1使用InvalidateRect函数刷新界面,WM_PAINT消息里面使用函数把图片贴到界面上。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式