Шаг 47.
Среда программирования Visual C++.
Процесс обмена данными и проверки данных диалога

    На этом шаге мы рассмотрим реализацию процесса обмена данными.

    Вызов функции DoDataExchange() осуществляется функцией CWnd::UpdateData(), в которой создается объект CDataExchange, передаваемый в качестве параметра сначала функции DoDataExchange(), а затем - DDX/DDV-функциям.

    Единственный параметр функции UpdateData() типа BOOL определяет направление передачи данных. Функция CDialog::OnInitDialog(), выполняемая при создании диалогового окна, вызывает UpdateData() с параметром FALSE для передачи в элементы управления значений соответствующих переменных-членов класса диалога. Когда пользователь щелкает в диалоговом окне ОК, стандартный обработчик CDialog::OnOK() вызывает UpdateData() с параметром TRUE для выполнения проверки данных и сохранения их в переменных-членах. Схема этого процесса показана на рисунке 1.


Рис.1. Схема механизма DDX/DDV

    Вызов функции CWnd::UpdateData() реализует обмен данными и их проверку в любом месте программы. В качестве примера рассмотрим приложение для просмотра изображений, в котором допускается изменять разрешение и цвет изображения, манипулируя элементами управления немодального диалогового окна. Чтобы обновить изображение сразу же после изменения значений в элементах управления нужно вызвать UpdateData(). Это позволяет сохранить новые параметры в классе диалога и сделать их доступными для функций перерисовки изображения.

    Текст измененного приложения можно взять здесь (48,9 Кб).

    На следующем шаге мы рассмотрим нестандартную реализацию DDX/DDV.




Предыдущий шаг Содержание Следующий шаг