首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

VC6.0 MFC 多對話框控件初始化:新建對話框類需手動添加初始化代碼

     編輯:程式設計綜合問答

現象

向專案添加第二個 Dialog 資源及對應類(如 CSecondDlg)後,在首個對話框(CFirstDlg)的 OnInitDialog 中初始化第二個對話框的控件會報「控件未定義」。

原因

  • MFC 向導僅為**主對話框**自動生成 DoDataExchange(DDX)與控件變量綁定代碼。
  • 新建對話框類若未勾選「添加類」向導中的「控件變量」,或未手動在 DoDataExchange 中添加 DDX_Control,控件變量不存在,自然無法初始化。

解決步驟

  1. 打開第二個對話框類頭文件(SecondDlg.h),在 //{{AFX_DATA(CSecondDlg) 區域手動聲明控件變量:
    CButton m_btnOk; CEdit m_editInput; // 等
  2. 在 SecondDlg.cpp 的 DoDataExchange 中綁定:
    DDX_Control(pDX, IDC_BTN_OK, m_btnOk); DDX_Control(pDX, IDC_EDIT_INPUT, m_editInput);
  3. 在 OnInitDialog 中正常初始化:
    m_btnOk.SetIcon(...); m_editInput.SetWindowText(_T("默認值"));
  4. 若需在首個對話框中操作第二個對話框控件,需先構造 CSecondDlg dlg; dlg.DoModal();,或模式化調用時在 dlg 對象上操作。

最佳實踐

使用類向導(Class Wizard / Visual Studio 中的「添加變量」)右鍵控件 →「添加變量」,自動完成聲明與 DDX 綁定,避免手寫錯誤。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved