Итак, DDX. Еще раз это механизм передачи данных от элемента управления к переменной и назад.
Стандартный механизм DDX работает так. При создании объекта диалога производится начальная инициализация в конструкторе.
CTest5Dlg::CTest5Dlg(CWnd* pParent /*=NULL*/) : CDialog(CTest5Dlg::IDD, pParent) { //{{AFX_DATA_INIT(CTest5Dlg) m_Ed1 = _T(""); m_Ed2 = _T(""); //}}AFX_DATA_INIT // Note that LoadIcon does not require a // subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); }
После этого при выводе диалога на экран производится подготовка в функции OnInitDialog перегруженного класса. А в момент вызова OnInitDialog базового класса производится передача данных в элементы управления.
BOOL CTest5Dlg::OnInitDialog() { ....... CDialog::OnInitDialog(); ....... }
Вы можете править данные в элементе управления и ничего не будет происходить. Данные хранятся в элементе управления. Дальше два стандартных выхода. Либо нажать Cancel и тогда данные не будут перемещены в переменные, или вызвать OK. При вызове OK данные будут перемещены из элемента управления в переменные класса диалога.