Обмен данными в диалоговом окне
Если используется механизм DDX, задать начальные значения переменных членов объекта диалогового окна, обычно в обработчике OnInitDialog или конструкторе диалогового окна.Непосредственно перед тем, отображается диалоговое окно механизм DDX границ возвращает значения переменных-членов к элементам управления в диалоговом окне, когда они отображаются в диалоговом окне появится в ответ на само DoModal или Создать.Реализация по умолчанию OnInitDialog в CDialog вызывает функцию-член UpdateData класса CWnd для инициализации элементов управления в диалоговом окне.
Один и тот же механизм возвращает значения из элементов управления к переменным членов, когда пользователь нажимает кнопку ok (или вызовите функцию-член UpdateData с аргументом Истина).Механизм проверки данных диалогового окна проверяет все элементы данных, для которых определенные правила проверки.
На следующем рисунке показан обмен данными диалоговых окон.
Обмен данными в диалоговом окне
UpdateData работает в обоих направлениях, как указано параметром BOOL переданным ему.Для выполнения обмена, UpdateData настраивает объект CDataExchange и вызывает переопределение типа диалогового окна функции-члена DoDataExchange entity_CODECDialog.DoDataExchange принимает аргумент типа CDataExchange.Объект CDataExchange, передаваемый UpdateData представляет контекст обмена, указав такие сведения, как направление обмена.
Если (или мастера кода), переопределяют DoDataExchange указывается звонок до одной функции DDX на элемент данных (элемент управления).Каждая функция DDX может для обмена данными в обоих направлениях на основе контекста, заданного аргументом CDataExchange переданным в DoDataExchangeUpdateData.
MFC предоставляет многие функции DDX для различных типов обмена.В следующем примере показано переопределение DoDataExchange, в котором вызываются 2 функции DDX и одна функция DDV:
void CTestDialog::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Check(pDX, IDC_MY_CHECKBOX, m_bVal);
DDX_Text(pDX, IDC_MY_TEXTBOX, m_strName);
DDV_MaxChars(pDX, m_strName, 20);
}
Линии DDX_ и DDV_ сопоставление данных.Образец DDX и отображаются функции DDV для управления checkbox и управления поля ввода, соответственно.
Если пользователь отменяет модального диалогового окна, функция-член OnCancel завершается диалоговое окно и DoModal возвращает значение IDCANCEL.В этом случае данные не передаются между диалоговым окном и объектом диалогового окна.
См. также
Основные понятия
Обмен данными и проверка диалогового окна