怎么从一个无限循环里面跳不出来啊???

oyljerry 2004-07-06 08:06:33
部分代码如下:

while (bLoopFlag)
{
if (::PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
::TranslateMessage(&msg);
::DispatchMessage (&msg);
}
else {这里为我实现的代码}
}
我设了两个按钮(一个为“开始”一个为“停止”)当我按下“开始”按钮的时候的时候,进入上面那个循环,(即bLoopFlag = true),我希望按下“停止”按钮时,程序从循环中退出(我在停止的代码中将bLoopFlag设值为false了)
可是为什么程序运行的时候,就没响应了??test了一下,感觉好像一直在循环里面灭有出来??
...全文
230 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
oyljerry 2004-07-07
  • 打赏
  • 举报
回复
bLoopFlag在停止按钮中没有重复定义啊,不过在停止按钮中有一个赋值语句啊!
bLoopFlag = false;
我用了另一个方法,是在用户界面线程中开了一个工作者线程(用来实现那个循环),可线程编译的时候好像也有错误?
btbq 2004-07-07
  • 打赏
  • 举报
回复
应当保证bLoopFlag为不重名的全局变量。
brainholmes 2004-07-07
  • 打赏
  • 举报
回复
while (bLoopFlag)
{
if (::PeekMessage(&msg,NULL,0,0,PM_REMOVE)) //这里也不用判断了
{
::TranslateMessage(&msg);
::DispatchMessage (&msg);
}
else {这里为我实现的代码} //在这里设一个钩子
//截获鼠标单击事件,得到一个hwnd,以便获得,按键上的文字,如果和你退出健的符合,跳出来(break;)
}

我的方法也不知道能不能行,但是要想要按键有响应,单线程应该是不行的。
btbq 2004-07-07
  • 打赏
  • 举报
回复
在停止按钮代码中有重复定义bLoopFlag吗?如果是这样,bLoopFlag就成局部变量了。
brainholmes 2004-07-07
  • 打赏
  • 举报
回复
用thread的倒是可以 保证响应
oyljerry 2004-07-06
  • 打赏
  • 举报
回复
break;加到哪里呢???
mahatma_cn 2004-07-06
  • 打赏
  • 举报
回复
break;

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧