关于在VC++中连续显示图片的问题

我想用一条循环来不断显示位图,每次显示完就重绘把它擦掉,再显示下一幅。我就在循环里面调用Invalidate()的方法去使窗口绘,但结果是并不能每次循环都能调用到OnDr... 我想用一条循环来不断显示位图,每次显示完就重绘把它擦掉,再显示下一幅。我就在循环里面调用Invalidate()的方法去使窗口绘,但结果是并不能每次循环都能调用到OnDraw()方法。只在循环的最后一次调用到OnDrqw()。请教是怎么回事,要怎样才能实现这个效果?谢谢!
很多谢诸位的帮助,答案我已找到了,是要另外启动一个线程来进行循环重绘才能实现预期的效果。tanyuguo先生讲得很有道理。谢谢你们!
展开
 我来答
忘至白葬不情必0T
2008-08-14 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:90%
帮助的人:1.2亿
展开全部
调用Invalidate等函数后窗口不会立即重绘,这是由于WM_PAINT消息的优先级很低,它需要等消息队列中的其它消息发送完后才能被处理。你可以试试UpdateWindow,UpdateWindow函数可使WM_PAINT被直接发送到目标窗口,从而导致窗口立即重绘。
游戏互动
2008-08-13 · TA获得超过160个赞
知道答主
回答量:67
采纳率:87%
帮助的人:30.8万
展开全部
如果你循环写的没问题,那么肯定是每次都重绘了,只是速度太快你看不见而已,如果要实现动画效果,建议你可以设置一个计数器或定时器,人眼可分辨的速度大概是20-30张/秒,你可以设置每33-50毫秒切换一张

如果不了解可以加我
QQ:8686520 ,验证写"C++"
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
焉湉湉00P
2008-08-13 · TA获得超过1858个赞
知道大有可为答主
回答量:1556
采纳率:100%
帮助的人:1427万
展开全部
前面画的被后面画的覆盖了`~~~你尝试用TIMER来驱动图片的显示吧~~每收到一个WM_TIMER就更换一张图片
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式