怎样让代码停顿一下再运行?除了用sleep

while(p2!=NULL){mdc->SelectObject(bitmap[p2->ii][p2->jj]);dc.BitBlt(x+p2->mm,y+p2->nn... while(p2!=NULL)
{
mdc->SelectObject(bitmap[p2->ii][p2->jj]);
dc.BitBlt(x+p2->mm,y+p2->nn,93,100,mdc,0,0,SRCCOPY);
////////////////在这里让其停顿一下///////////////

p2 = p2->p;

}

我这个是MFC图片在窗口中显示,本来想用sleep,但是别人说不合适。
展开
 我来答
匿名用户
2013-09-30
展开全部
sleep 的时候程序是暂停的,有假死的感觉;
采用定时器,灵活方便,便于操作、管理;

你要暂停的地方,需要加一个判断语句,语句值根据定时器来改变
更多追问追答
追问
但是我程序里还有OnKeyDown函数,我想让他在绘制过程中,不接受键盘信息,要怎样弄呀(因为这里停顿延时了)
追答
延时的时候屏蔽 OnKeyDown 执行过程;
设置一个变量,延时的时候,OnKeyDown禁用,可以采用定时器延时一个变量做

int aaa=0; 控制用变量

while(p2!=NULL)
{
mdc->SelectObject(bitmap[p2->ii][p2->jj]);
dc.BitBlt(x+p2->mm,y+p2->nn,93,100,mdc,0,0,SRCCOPY);
////////////////在这里让其停顿一下///////////////
aaa = 0; // 按键被禁用

timer()
}

OnKeyDown()
{
if(aaa==1)
执行按键操作
}

timer()
{ 定时到
aaa=1; // 延时结束,按键启用
p2 = p2->p;

}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
路易五十三
2013-09-30 · 超过15用户采纳过TA的回答
知道答主
回答量:54
采纳率:0%
帮助的人:44.8万
展开全部
“本来想用sleep,但是别人说不合适”,不合适之处也许是在你代码停顿的时间段内MFC窗体还需要响应消息,如果用了sleep会使你的窗口看起来就像死掉了一样。关于这个楼主可以尝试搜一搜“消息泵”,偶然间读到过这个东西,当时没有时间深究,或许可以帮到你。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bhtzu
2013-09-30 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4443万
展开全部
做动画效果?
一般在MFC程序中,推荐使用定时器,但逻辑和这个就不一样了,不能用while
SetTimer(1,毫秒数,NULL);
在OnTimer里面做单次绘制。
追问
但是我程序里还有OnKeyDown函数,我想让他在绘制过程中,不接受键盘信息,要怎样弄呀(因为这里停顿延时了)
追答
和这个没关系。MFC窗口程序是消息队列机制,除非OnKeyDown暂停或阻止了消息循环,否则不影响。
如果阻止了,只能使用UI线程来实现,通过线程的并发来保障绘制不受影响。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hj304huan
2013-09-30 · TA获得超过196个赞
知道小有建树答主
回答量:135
采纳率:0%
帮助的人:106万
展开全部
MFC工程的话可以用AfxMessageBox(“”)参数可以填一下调试信息。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
124812497
2013-09-30
知道答主
回答量:36
采纳率:0%
帮助的人:12.3万
展开全部
可以加个for循环
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式