我建立了一个基于对话框的应用程序CMyDlg,在其中一个对话框中,有一个笨重函数Genetic(),于是我在循环中添加了如下代码:
while(::PeekMessage(&message,NULL,0,0,PM_REMOVE))
{
   ::TranslateMessage(&message);
   ::DispatchMessage(&message);
}
这样在函数运算的过程中,可以执行别的操作,但是当我关闭这个对话框后,发现机器变得很慢,查看了一下任务管理器中的进程中My.exe并没有结束,还在继续运行,请问高手这是怎么回事?我怎样才能像普通的exe程序那样,在关闭对话框的同时,让它不再占用过多的CPU?

解决方案 »

  1.   

    if(message.hwnd==hDlgActive && message.message==WM_DESTROY) break; //在对话框退出时结束循环.
      

  2.   

    谢谢楼上的帮助,还想请问一下,hDlgActive是什么意思?
      

  3.   

    楼上的方法不行啊,关闭程序后CPU还是100%
      

  4.   

    MSG msg;while (TURE)
    {
    if (::PeekMessage(&msg,NULL,0,0,PM_REMOVE))//从Windows消息队列中取出消息
    {
    if (msg.message== WM_QUIT)//如果消息为退出,发送退出消息

    ::PostQuitMessage(-1);
    }
    if(!AfxGetApp()->PreTranslateMessage(&msg))//如果无法预处理消息
    {
    ::TranslateMessage(&msg);//转换消息
    ::DispatchMessage(&msg);//发送消息
    }
    }
    }