Мы посмотрели, что ClassWizard запрещает нам связывать элемент с несколькими переменными. Но мы попробуем его обойти. Делаем первую связь. И копируем в блокнот – описание переменной, DDX макрос, инициализацию переменной.
А вот теперь ее удаляем и делаем связь с числом используя ClassWizard:
И начинаем все прописывать из блокнота. Переменную.
class CTest5Dlg : public CDialog { // Construction public: CTest5Dlg(CWnd* pParent = NULL); // standard constructor CString m_Ed1; // Dialog Data //{{AFX_DATA(CTest5Dlg) enum { IDD = IDD_TEST5_DIALOG }; CEdit m_EdCtrl2; CEdit m_EdCtr1; CString m_Ed2; int m_Ed1Int; //}}AFX_DATA ....... };
DDX макрос
void CTest5Dlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CTest5Dlg) DDX_Control(pDX, IDC_EDIT2, m_EdCtrl2); DDX_Control(pDX, IDC_EDIT1, m_EdCtr1); DDX_Text(pDX, IDC_EDIT2, m_Ed2); DDX_Text(pDX, IDC_EDIT1, m_Ed1Int); //}}AFX_DATA_MAP DDX_Text(pDX, IDC_EDIT1, m_Ed1); }
Начальную инициализацию в конструкторе:
CTest5Dlg::CTest5Dlg(CWnd* pParent /*=NULL*/) : CDialog(CTest5Dlg::IDD, pParent) { //{{AFX_DATA_INIT(CTest5Dlg) m_Ed2 = _T(""); m_Ed1Int = 0; //}}AFX_DATA_INIT ..... m_Ed1 = _T(""); }
А вот теперь аккуратнее, если Вы в OnInitDialog() делали что-то:
BOOL CTest5Dlg::OnInitDialog() { m_Ed1 = "123"; m_Ed2 ="Word"; CDialog::OnInitDialog(); .... }
Собираем проект. Проблем никаких нет, даже запускается.