Визуальное программирование и MFC



         

Модальная диалоговая панель - часть 5


Если функция DDV_ обнаруживает ошибку пользователя при вводе информации в органе управления, она отображает сообщение и передает фокус ввода соответствующему органу управления.

В отличие от функций DDX_ функции DDV_ в зависимости от их предназначения имеют различное количество параметров. Первый параметр, как и в случае DDX_, содержит указатель на объект класса CDataExchange. Остальные параметры имеют различное назначение в зависимости от функций.

Приложение не должно напрямую вызывать метод DoDataExhange. Он вызывается через метод UpdateData, определенный в классе CWnd. Необязательный параметр этой функции определяет, как будет происходить обмен данными.

Если метод UpdateData вызывается с параметром FALSE (см. метод CDlg::OnClickedClear), то выполняется инициализация диалоговой панели. Информация из данных класса отображается в органах управления диалоговой панели.

В случае, если метод UpdateData вызван с параметром TRUE, данные перемещаются в обратном направлении. Из органов управления диалоговой панели они копируются в соответствующие элементы данных класса диалоговой панели.

Метод UpdateData возвращает ненулевое значение, если обмен данными прошел успешно, и нуль в противном случае. Ошибка при обмене данными может произойти, если данные копируются из диалоговой панели в элементы класса диалоговой панели и пользователь ввел неправильные данные, отвергнутые процедурой автоматической проверки данных.

При создании модальной диалоговой панели перед тем, как панель появится на экране, вызывается виртуальный метод OnInitDialog класса CDialog. По умолчанию OnInitDialog вызывает метод UpdateData и выполняет инициализацию органов управления. Если метод OnInitDialog переопределяется в классе диалоговой панели, в первую очередь необходимо вызвать метод OnInitDialog класса CDialog.

Метод UpdateData также вызывается некоторыми другими методами класса CDialog. Так, метод UpdateData вызывается, когда пользователь закрывает модальную диалоговую панель, нажимает кнопку "Ok".


Содержание  Назад  Вперед