我正在使用MFC项目。我有一种情况,我想在对话框出现后立即进行大量计算。 我尝试将此计算放在OnInitDialog()中,并尝试将其放在构造函数中。出于显而易见的原因,使用这种方法,对话框出现时并不需要时间。
有没有办法在对话框出现后立即进行计算?如果是这样,我需要将我的代码放入哪个函数?
答案 0 :(得分:2)
是的,从构造函数或OnInitDialog
覆盖创建另一个线程是解决此问题的方法。但是,为了向复杂初始化完成的对话框发回通知,您需要使用SendMessage
或PostMessage
让对话窗口了解此完成并适当更新UI 。您还需要自定义消息代码(WM_USER + N 或WM_APP + N ),以及消息映射中的条目:ON_MESSAGE
。
答案 1 :(得分:1)
在这种情况下,您需要在子线程中进行计算。通常我使用AfxBeginThread完成这项工作。
答案 2 :(得分:1)
BOOL CMFC_dialogDlg::OnInitDialog()
{
AfxBeginThread(ThreadFunc,NULL/*Pass the parameter to the function*/);
}
UINT ThreadFunc(LPVOID param)
{
/*Do complex task*/
for(int i=0;i<1000 ;i++)
{
}
}