void func()
{
   do...//计算。。
}
MSG   msg;   
bool m_bFlag=true;UINT ThreadFunction(LPVOID pParam)
{        CADlg *p=(CADlg *)pParam;      while   (m_bFlag)   
     {    p->func(); 
          ::TranslateMessage(&msg);   
          ::DispatchMessage(&msg);                     
     }   
     return 0;
}
CWinThread *pThread;
BOOL CADlg::OnInitDialog(){
     
     pThread=AfxBeginThread((AFX_THREADPROC)ThreadFunction, this, THREAD_PRIORITY_BELOW_NORMAL);         return TRUE;  // return TRUE  unless you set the focus to a control
}
当线程序函数启动时候,对话框上的其他BUTTON按钮就不响应鼠标点击了??? 请问怎样解决? 急!!!!

解决方案 »

  1.   

    循环一直在执行,占用了cpu的时间片了,在每次循环的时候,加一个Sleep(5);
      

  2.   

    你的while循环一直占据着CPU的运行时间,一直在线程函数里面执行,而你的界面线程就被挂起了,怎么能执行
    到你的BUTTON时间呢?线程中分派消息完成之后让它跳出循环就可以了
      

  3.   

    谢谢大家,可是我的程序要求不停在func()函数中检测一些状态信息,所以WHILE()循环需要被一直执行检测。可是又不能耽误其他的操作,请问大家有什么更好的办法,谢谢。
      

  4.   

    就是要sleep,这个单位是毫秒,1000毫秒才一秒,停这么个时间根本不会有影响的。