首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

MFC中如何用按钮控制强制跳出一个循环?跪求

2012-03-01 
MFC中怎么用按钮控制强制跳出一个循环?跪求高手指点假设有一个函数:xxxxx(){while(1){......//循环内我的

MFC中怎么用按钮控制强制跳出一个循环?跪求高手指点
假设有一个函数:
xxxxx()
{
      while(1)
      {   ......//循环内我的代码
        }
}
我必须要用一个按钮来控制它强行退出循环
OnButton()
{
    ....//这里怎么写?
}

请问各位高手代码要怎么写啊?
听有些人说还要用到多线程?那多线程的代码要怎么写啊??

[解决办法]
BOOL g_bQuit = FALSE;

xxxxx()
{
while(!g_bQuit)
{ ......//循环内我的代码
}
}
我必须要用一个按钮来控制它强行退出循环
OnButton()
{
....//这里怎么写?
g_bQuit = TRUE;

//等着
}
[解决办法]
首先如果你只有一个线程的话是不可能实现(当然我是这样理解,如果有高手有方法的话`````拜之).因为在一个线程里,你知道进了这个while循环,你的这个程序就会把所有的本程序的cpu时间调给while循环使用,而其他的只有等他执行完了才能又获得cpu时间.

你要的话

Thread1里执行while

Thread2里响应button事件,当你点击后,再吧状态传给Thread1,改变循环条件
[解决办法]
不用创建线程,可在循环中加入
MSG message;
while(1){
if(::PeekMessage(&message, NULL, 0, 0, PM_REMOVE)) {
::TranslateMessage(&message);
::DispatchMessage(&message);
}
}
这样就可以响应按钮消息了
[解决办法]
不用线程,但是如果那个while循环得到了cpu的控制权,那么程度就会一直的在循环中运行,而跳不出来,根本就不会响应其他的执行。

最好是while用一个变量来控制他的结束,这个变量由按下按钮来改变值,如
isStop = false;
while (!isStop) {...}

当按下按钮后,修改isStop = true;因为while循环每进行下一次的运行都是检查isStop的值,如果为true那么就退出了,以前也这样做过,看了不少人也推荐这样做。

热点排行