本文主要是介绍MFC 处理耗时操作的一种办法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
原理就是将耗时的操作分布完成. 即处理一步以后,马上处理程序中的消息。并且把启动和停止操作放到一个函数中间。
void ProcessMessages()
{
CWinApp* pApp = AfxGetApp();
MSG msg;
while ( PeekMessage ( &msg, NULL, 0, 0, PM_NOREMOVE ))
pApp->PumpMessage();
}
void CTestLengthyProcessingDlg::OnOK()
{
//设置运行标志,以便随时可以中断
static BOOL bRun = FALSE;
bRun = !bRun;
SetDlgItemText(IDOK,bRun ? "停止" : "开始");
if (bRun)
{
m_progress.SetPos(0);
TRACE("Start Do Some\n");
//冗长的操作
for (int i = 0; i < 100 && bRun; ++i)
{
Sleep(100);// 分布操作。
m_progress.SetPos(i+1);
ProcessMessages();//每一步操作结束后,都处理消息
}
TRACE("End Do Some\n");
if (bRun)
{
bRun = FALSE;
SetDlgItemText(IDOK, "开始");
}
}
}
这篇关于MFC 处理耗时操作的一种办法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!