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

Mfc 对话框出现后立即执行的操作,mfc,dialog,Mfc,Dialog,我与MFC项目的工作。我有一个情况,我想做一个广泛的计算,只要对话框出现。 我试着把这个计算放在OnInitDialog()中,也试着把它放在constructor中。由于明显的原因,使用这种方法,对话框需要时间才能出现,而这不是预期的 有没有办法在对话框出现后立即进行计算?如果是这样,我需要将代码放入哪个函数?在这种情况下,您需要在子线程中进行计算。通常我使用。在这种情况下,您需要在子线程中进行计算。通常我使用。BOOL CMFC_dialogDlg::oninitialog() { AfxB

我与MFC项目的工作。我有一个情况,我想做一个广泛的计算,只要对话框出现。 我试着把这个计算放在OnInitDialog()中,也试着把它放在constructor中。由于明显的原因,使用这种方法,对话框需要时间才能出现,而这不是预期的


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

在这种情况下,您需要在子线程中进行计算。通常我使用。

在这种情况下,您需要在子线程中进行计算。通常我使用。

BOOL CMFC_dialogDlg::oninitialog() { AfxBeginThread(ThreadFunc,NULL/*将参数传递给函数*/); } UINT ThreadFunc(LPVOID参数) { /*做复杂的工作*/ 对于(inti=0;i
boolcmfc_dialogDlg::OnInitDialog()
{
AfxBeginThread(ThreadFunc,NULL/*将参数传递给函数*/);
}
UINT ThreadFunc(LPVOID参数)
{
/*做复杂的工作*/

对于(int i=0;i是的,从构造函数中创建另一个线程或
OnInitDialog
重写是解决此问题的方法。但要向对话框返回复杂初始化已完成的通知,需要使用
SendMessage
PostMessage
让对话框窗口知道此完成和更新适当地修改UI。您还需要自定义消息代码(WM_用户+N或WM_应用+N),以及消息映射中的一个条目:
ON_message

是的,从构造函数或
OnInitDialog
重写创建另一个线程是解决此问题的方法。但要将复杂初始化完成的通知返回给对话框,您需要使用
SendMessage
PostMessage
to让对话框窗口了解此完成情况并适当更新UI。您还需要自定义消息代码(WM_USER+N或WM_APP+N),以及消息映射中的条目:
ON_message

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++)
 {
 }

}