向專案添加第二個 Dialog 資源及對應類(如 CSecondDlg)後,在首個對話框(CFirstDlg)的 OnInitDialog 中初始化第二個對話框的控件會報「控件未定義」。
DoDataExchange(DDX)與控件變量綁定代碼。DoDataExchange 中添加 DDX_Control,控件變量不存在,自然無法初始化。SecondDlg.h),在 //{{AFX_DATA(CSecondDlg) 區域手動聲明控件變量:CButton m_btnOk; CEdit m_editInput; // 等SecondDlg.cpp 的 DoDataExchange 中綁定:DDX_Control(pDX, IDC_BTN_OK, m_btnOk); DDX_Control(pDX, IDC_EDIT_INPUT, m_editInput);OnInitDialog 中正常初始化:m_btnOk.SetIcon(...); m_editInput.SetWindowText(_T("默認值"));CSecondDlg dlg; dlg.DoModal();,或模式化調用時在 dlg 對象上操作。使用類向導(Class Wizard / Visual Studio 中的「添加變量」)右鍵控件 →「添加變量」,自動完成聲明與 DDX 綁定,避免手寫錯誤。