
怎样让代码停顿一下再运行?除了用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,但是别人说不合适。 展开
{
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,但是别人说不合适。 展开
6个回答
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;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
“本来想用sleep,但是别人说不合适”,不合适之处也许是在你代码停顿的时间段内MFC窗体还需要响应消息,如果用了sleep会使你的窗口看起来就像死掉了一样。关于这个楼主可以尝试搜一搜“消息泵”,偶然间读到过这个东西,当时没有时间深究,或许可以帮到你。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
做动画效果?
一般在MFC程序中,推荐使用定时器,但逻辑和这个就不一样了,不能用while
SetTimer(1,毫秒数,NULL);
在OnTimer里面做单次绘制。
一般在MFC程序中,推荐使用定时器,但逻辑和这个就不一样了,不能用while
SetTimer(1,毫秒数,NULL);
在OnTimer里面做单次绘制。
追问
但是我程序里还有OnKeyDown函数,我想让他在绘制过程中,不接受键盘信息,要怎样弄呀(因为这里停顿延时了)
追答
和这个没关系。MFC窗口程序是消息队列机制,除非OnKeyDown暂停或阻止了消息循环,否则不影响。
如果阻止了,只能使用UI线程来实现,通过线程的并发来保障绘制不受影响。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
MFC工程的话可以用AfxMessageBox(“”)参数可以填一下调试信息。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询