我要实现的功能如下:
  1、定义函数Wait(),在其中定义一个循环,循环控制变量为一个全局的标志变量m_bSign,当此变量为true时,反复执行此循环。
  2、定义快捷键F9,其实现函数为改变这个全局标志变量m_bSign=false。
  我想要实现的效果就是:按了F9后,Wait()函数退出循环,继续执行接下来的代码。
  但现在的问题是当Wait()函数循环开始后,程序就不接收F9的响应了,F9的实现函数进不去了。这是怎么回事?代码如下:void CTestThreadView::OnBUTTON_Wait() 
{
m_bSign = true; while (m_bSign)
{
MSG msg;
while(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
_sleep(1);
Sleep(1);
} ... ...}
void CTestThreadView::OnAcce_F9() 
{
m_bSign = false;
}请各位大侠指点一下。谢谢!

解决方案 »

  1.   

    http://blog.csdn.net/lixiaosan/archive/2006/04/11/658248.aspx#582997point 29
      

  2.   

    当在程序中需要进行大数据量计算的时候(比如搜索磁盘,大数据量传输等),由于这些计算过程是在界面线程(UI Process)中,由此引发了界面线程的消息阻塞。我们创建一个工作线程(worker thread)来处理计算过程,以解决该问题。
    下面是一个简单的创建一个工作线程的实现:
    //xxxdlg.h
    static UINT MyThread(LPVOID pParam);
    CWinThread* pMyThread;//xxxdlg.cpp
    CXXXDlg::OnButton1()
    {
         pMyThread = AfxBeginThread(MyThread, this);
         pMyThread = NULL;
    }UINT CXXXDlg::MyThread(LPVOID pParam)
    {
         CXXXDlg *pDlg = (CXXXDlg *)pParam;     //这里添加计算过程     return 0;
    }
      

  3.   

    用WaitForSingleObject之类的函数等待线程结束
      

  4.   

    akirya(坏[其实偶不是什么所谓的坏人]) ,能给个具体的解决办法吗?我也试过了,但是没能实现。呵呵,比较笨!