我建立了一个基于对话框的应用程序CMyDlg,在其中一个对话框中,有一个笨重函数Genetic(),于是我在循环中添加了如下代码:
while(::PeekMessage(&message,NULL,0,0,PM_REMOVE))
{
::TranslateMessage(&message);
::DispatchMessage(&message);
}
这样在函数运算的过程中,可以执行别的操作,但是当我关闭这个对话框后,发现机器变得很慢,查看了一下任务管理器中的进程中My.exe并没有结束,还在继续运行,请问高手这是怎么回事?我怎样才能像普通的exe程序那样,在关闭对话框的同时,让它不再占用过多的CPU?
while(::PeekMessage(&message,NULL,0,0,PM_REMOVE))
{
::TranslateMessage(&message);
::DispatchMessage(&message);
}
这样在函数运算的过程中,可以执行别的操作,但是当我关闭这个对话框后,发现机器变得很慢,查看了一下任务管理器中的进程中My.exe并没有结束,还在继续运行,请问高手这是怎么回事?我怎样才能像普通的exe程序那样,在关闭对话框的同时,让它不再占用过多的CPU?
{
if (::PeekMessage(&msg,NULL,0,0,PM_REMOVE))//从Windows消息队列中取出消息
{
if (msg.message== WM_QUIT)//如果消息为退出,发送退出消息
{
::PostQuitMessage(-1);
}
if(!AfxGetApp()->PreTranslateMessage(&msg))//如果无法预处理消息
{
::TranslateMessage(&msg);//转换消息
::DispatchMessage(&msg);//发送消息
}
}
}