Шаг 48.
Среда программирования Visual C++.
Нестандартная реализация DDX/DDV

    На этом шаге мы рассмотрим реализацию пользователем механизма DDX/DDV.

    Вы можете определить собственные DDX/DDV-функции. В качестве параметров DDX-функции следует передавать указатель на объект CDataExchange, идентификатор элемента управления и переменную класса диалога. DDV-функции передают указатель на объект CDataExchange и переменную-член класса диалога. Другие параметры описывают условия проверки; так, например, функция DDVMinMaxInt() получает наибольшее и наименьшее допустимые значения целого числа. DDV-функцию располагают всегда непосредственно после вызова DDX-функции, с которой она связана.

    Необходимость в собственных DDV-функциях иногда возникает в случае, когда требуется проверить введенные значения, сравнивая их не с константами, а с переменными, или когда проверки следует проводить лишь при некотором условии. Так, например, в приведенном ниже фрагменте кода применяются различные варианты контроля в зависимости от состояния флажка IDC_FEMALE, показывающего, с какой из двух переменных нужно сравнить введенное значение переменной m_age.

//{{AFX_DATA_MAP(CMyClass) 
DDX_Check(pDX,   IDC_FEMALE,   m_bFemale); 
DDX_Text(pDX,   IDC_EDIT1,   m_age); 
//}}AFX_DATA_MAP 
if (m_bFemale)
    DDV_MinMax(pDX,   m_age,   0,   m_maxFemaleAge); 
else
    DDV_MinMax(pDX,   m_age,   0,   m_maxMaleAge);

    Из примера также видно, что все нестандартные DDX/DDV-функции должны располагаться вне блока //{{AFX_, в котором находится код, обслуживаемый ClassWizard.

    Добавим собственные функции проверки значений, вводимых пользователем в поле UserID.

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

    На следующем шаге мы рассмотрим реализацию функции OnInitDialog().




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