Иллюстрированный самоучитель по Visual Studio.Net


Создание и связывание переменных с полями диалога - часть 2


Используя ту же технику, создайте три переменные (m_rSlider, m_gSlider и m_bSlider) типа Control и свяжите их с тремя ползунками. При этом в поле Variable Type: должен быть выбран класс CSliderCtrl.

Ограничения на числовые значения, вводимые пользователем в окна редактирования, реализуются с помощью функций динамической проверки данных. Это функции типа DDV_ (Dynamic Data Validation), которые, так же как и функции DDX_, создаются с помощью мастера Member Variable Wizard. Однако эту часть работы в бета-версии Studio.Net приходится делать вручную. Вам придется самостоятельно найти справку по использованию мастера для автоматизации создания функций проверки данных. Тема в указателе справочной системы обозначена как Dialog Data Exchange and Validation. Важной особенностью использования функций типа DDV_ является то, что для каждого элемента управления вызовы DDV_ -функций должны непосредственно следовать за вызовами оох_-функций. Нам надо задать ограничения на значения цвета (0-255) и значение толщины пера (0-100). В конечном счете функция DoDataExchange должна приобрести вид:

void CPolyDlg::DoDataExchange(CDataExchange* pDX)

{

//====== Связывание Control-переменных с ползунками

DDX_Control(pDX, IDC_BSLIDER, m_bSlider);

DDX_Control(pDX, IDCJ3SLIDER, m_gSlider);

DDX_Control(pDX, IDC_RSLIDER, m_rSlider);

//==== Связывание Control-переменных с нестандартными

//==== окнами редактирования

DDX_Control(pDX, IDC_COLOR, m_cColor) ;

DDX_Control(pDX, IDC_BLUE, m_cBlue);

DDX_Control(pDX, IDC_GREEN, m_cGreen);

DDX_Control (pDX, IDC_RED, m_cRed) ;

//==== Связывание Value-переменных с нестандартными

//==== окнами редактирования и проверка данных

DDX_Text(pDX, IDC_BLUE, m_nBlue);

DDV_MinMaxUInt(pDX, m_nBlue, 0, 255);

DDX_Text (pDX, IDC_GREEN, m_nGreen);

DDV_MinMaxUInt(pDX, m_nGreen, 0, 255);

DDX_Text(pDX, IDC_RED, m_nRed) ;

DDV_MinMaxUInt(pDX, m_nRed, 0, 255);

DDX_Text(pDX, IDC_PEN, m_nPen);

DDV_MinMaxUInt(pDX, m_nPen, 1, 100);

//==== Вызов родительской версии функции обмена CDialog::DoDataExchange(pDX);

}




Начало  Назад  Вперед