C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь


Тестостерон по супер ценам тестостерона пропионат цена По ссылке на нашем сайте

 Урок 24. Функции DDV / Уроки MFC / Visual C++

Visual C++. MFC
Урок 24. Функции DDV

На этом занятии мы с вами рассмотрим функции DDV_... . Их, как и функций DDX_, достаточно много (мало того, вы сами можете определять свои собственные). Служат эти функции для проверки введенных пользователем данных. Типичный пример использования такой функции - это проверка, что введенное пользователем число лежит в определенном диапазоне.

Для конкретного примера возьмем программу, созданную на предыдущих двух уроках. Найдите в классе CMyDlg реализацию метода DoDataExchange и добавьте следующую строку:

void CMyDlg::DoDataExchange(CDataExchange* pDX){
    //обязательно вызываем родительский метод
    CDialog::DoDataExchange(pDX);
    //обмениваем данные с Edit'ом
    DDX_Text(pDX, IDC_EDIT1, m_sData);
    DDV_MaxChars(pDX, m_sData, 3);
    //обмениваем данные с CheckBox'ом
    DDX_Check(pDX, IDC_CHECK1, m_bCheck);
}

Синтаксис у добавленной нами функции такой: первый параметр pDX (типа CDataExchange*) - это контекст обмена. Он нужен для функций DDX_ и DDV_ (например, он хранит информацию о том, куда движутся данные - от элементов управления к соответствующим переменным или обратно). Второй параметр - это переменная, связанная с нашим элеменом управления (именно на нее и накладываются некоторые ограничения). Третий и последующие параметры (если они есть) - это сами ограничения. В нашем случае мы добавили ограничение на максимальное число вводимых символов в нашем edit'е (три символа).

Вот еще несколько примеров функций DDV_ (у всех их них по четыре параметра):

DDV_MinMaxLong - для проверки, что некое число типа long лежит в некоторых пределах,

DDV_MinMaxInt - для проверки, что некое число типа int лежит в некоторых пределах,

DDV_MinMaxFloat - для проверки, что некое число типа float лежит в некоторых пределах.

Небольшое замечание по месту вызова DDV_ функций. Их рекомендуется вызывать сразу после соответствующей функции DDX_ (как в нашем примере: сначала мы вызвали функцию обмена DDX_Text(pDX, IDC_EDIT1, m_sData); для нашего edit'а и переменной m_sData, и сразу за этим функцию проверки DDV_MaxChars(pDX, m_sData, 3); для этой же переменной m_sData).

У всех функций DDV_ существует одно ограничение - проверка корректности данных осуществляется только после того, как кользователь нажимает на OK, а не в процессе набора. И это не слишком хорошо.