CMyApp::InitInstance()
{
CMyDialog1 dlg1;
m_pMainWnd = &dlg1;
int result = dlg1.DoModal(); // 正常
CMyDialog2 dlg2;
result = dlg2.DoModal(); // 回傳 -1 失敗
// 追蹤發現訊息佇列中出現 WM_QUIT
}
m_pMainWnd 指向擁有有效視窗控制代碼的物件。若無效,MFC 會自我發送 WM_QUIT 終止應用程式。m_pMainWnd 指向 dlg1 時,MFC 視其為主視窗。使用者關閉對話框 1 時,MFC 認為使用者要結束程式,因為主視窗已關閉。InitInstance() 在第二個 DoModal() 後會返回,而 m_pMainWnd 在精靈生成碼中已被使用,不應如範例般重複指派。m_pMainWnd 指向第一個對話框。CFrameWnd 或單純 CWnd)作為 m_pMainWnd,再依序呼叫各對話框 DoModal()。Create) 配合訊息迴圈管理。m_pMainWnd 決定應用程式生命週期。模態對話框關閉時若為主視窗,應用程式即結束。連續多個模態對話框需共用一個持久的主視窗物件。