出现对话框后立即执行操作

时间:2011-07-13 01:02:53

标签: mfc dialog

我正在使用MFC项目。我有一种情况,我想在对话框出现后立即进行大量计算。 我尝试将此计算放在OnInitDialog()中,并尝试将其放在构造函数中。出于显而易见的原因,使用这种方法,对话框出现时并不需要时间。

有没有办法在对话框出现后立即进行计算?如果是这样,我需要将我的代码放入哪个函数?

3 个答案:

答案 0 :(得分:2)

是的,从构造函数或OnInitDialog覆盖创建另一个线程是解决此问题的方法。但是,为了向复杂初始化完成的对话框发回通知,您需要使用SendMessagePostMessage让对话窗口了解此完成并适当更新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++)
 {
 }

}