MSG message;  //交出控制
do
{
     while(::PeekMessage(&message,NULL,0,0,PM_REMOVE))
     {
          ::TranslateMessage(&message);
          ::DispatchMessage(&message);
     }
}while(m_bPause);用这段代码实现暂停功能,但是在程序关闭以后,这个进程没有终止,cpu利用率100%,怎么回事!郁闷阿!

解决方案 »

  1.   

    你在wndproc里面没有对WM_QUIT和WM_DESTROY进行消息处理。
    要加这样的语句:
    {
      PostQuitMessage();
      m_bPause = 0;
    }
      

  2.   

    你的暂停似乎不能这样写啊,
     while(::PeekMessage(&message,NULL,0,0,PM_REMOVE))
         {
              ::TranslateMessage(&message);
              ::DispatchMessage(&message);
         }
    上面代码是不断循环的,知道发出WM_QUIT消息。而你把m_bPause加在了他们的外面,
    平时根本就到不了外面的while语句。当然你要暂停是,写PostQuitMessage()语句,而
    m_bPause = 1;这样就暂停了。妙啊,楼主,你的主意很妙的!
      

  3.   

    MSG message;  //交出控制
    do
    {
       if(PauseNow){
         while(::PeekMessage(&message,NULL,0,0,PM_REMOVE))
         {
              ::TranslateMessage(&message);
              ::DispatchMessage(&message);
         }
        }
    }while(m_bPause);