69658

DDX и переключатели

Практическая работа

Информатика, кибернетика и программирование

Подобно тому, как функция DDX DDX_Text позволяет ассоциировать элемент управления с переменной-членом, содержащей текст этого элемента управления, специальная функция DDX DDX_Radio организует взаимодействие с переключателями.

Русский

2014-10-08

37.5 KB

1 чел.

Тема 12. DDX и переключатели

Подобно тому, как функция DDX DDX_Text позволяет ассоциировать элемент управления с переменной-членом, содержащей текст этого элемента управления, специальная функция DDX DDX_Radio организует взаимодействие с переключателями. Эта функция позволяет связать с группой переключателей переменную типа int (целочисленную). Обратите внимание, эта функция применяется не для всех переключателей, а только для первого переключателя в группе. Целочисленное значение содержит номер выбранного переключателя в группе (начиная с нуля), кроме того, значение -1 свидетельствует об отсутствии выбора.

/ В используемой автором версии среды разработки Visual Studio. NET функцию

/на заметку;     DDX_Radio приходится добавлять вручную. Хотелось бы надеяться, что в буду-*      .,„-•"';      тем этот процесс будет автоматизирован при помощи мастера Add Member Variable Wizard.

Итак рассмотрим, как все это можно сделать.

  1.  Добавьте в класс CButtonsDlg переменную-член типа int по имени m_iAnswer.
  2.  Измените идентификаторы ресурсов кнопок Yes (Да), No (Нет) и Maybe (Может быть) переключателя на IDC_BTN_YES, IDC_BTN_NO и IDC__BTN_MAYBE соответственно. Хоть это и не обязательно, но сделает код более понятным.
  3.  Добавьте в функцию CButtonsDlg: :DoDataExchangeBbi30B следующей функции (новая строка выделена полужирным шрифтом).

void CButtonsDlg::DoDataExchange(CDataExchange*  pDX) {

СDialog::DoDataExchange(pDX);

DDX_Radio(pDX,   IDC_BTN_YES,   m_iAnswer); 1

4. Измените идентификатор ресурса кнопки Get Values (Получить значения) на
IDC_GET_RADIOBUTTON__VALUES, а также добавьте обработчик события щелчка на

ней. Обработчик должен отображать текущее состояние переключателей при каждом

щелчке на кнопке Get Values. Его код должен выглядеть следующим образом:

void   CButtonsDlg::OnBnClickedGetRadiobuttonValues()

{

if   (UpdateDataO )

{

CString  str/

str.Format("Radio  button  values   (%ld):\r\n\r\n"

"Yes   =  %s\r\n"

"No  -  %s\r\n"

"Maybe  =  %s",

m_iAnswer,

(0   ==  m^iAnswer   ?   "On"   :   "Off"),

(1   == m_iAnswer   ?   "On"   :   "Off"),

(2   ==  m_iAnswer   ?   "On"    :    "Off")); AfxMessageBox(str); } }

Обращение к функции DDX_Radio для элемента управления, не обладающего азамепсу;    стилем ws_group (Group = True), приведет к ошибке, поскольку Она примени-„s.-<f      ма лишь к первому элементу в группе переключателей.

Откомпилировав и запустив приложение, можно убедиться, что этот обработчик позволяет установить взаимодействие между кнопкой и переключателем. Теперь рассмотрим применение элемента управления флажок.

Элемент управления флажок

Флажок (checkbox) представляет собой квадратную кнопку со строкой текста описания. Этот элемент управления используется в тех случаях, когда пользователю необходимо предоставить на выбор любое количество параметров, совместимых между собой. Подобно переключателям, флажки обычно объединяют внутри элемента управления группа, чтобы пользователям была интуитивно понятна взаимосвязь между ними. Диалоговое окно Options среды разработки Visual Studio .NET, например, содержит несколько страниц, где флажки организованы именно таким образом.

Флажки бывают четырех типов: стандартный, автоматический, на три состояния и автоматический на три состояния. Им соответствуют константы стиля BS^CHECKBOX, BS_AUTOCHECKBOX, BS_3STATEh BS_AUT03STATE.

Каждый стиль подразумевает, по крайней мере, два состояния: установлен (checked), когда внутри квадрата отображается символ галочки, или сброшен (unchecked) — символ галочки отсутствует. Кроме того, флажок с тремя состояниями может находиться в неопределенном состоянии (indeterminate), когда флажок закрашен серым цветом. Вот когда вступает в игру значение BST_INDETERMINATE, которое можно передать функции CButton::SetCheck

Добавим в демонстрационное приложение данной главы еще одну группу флажков и кнопку Get Values для них (как и для переключателей в прошлом разделе). Поскольку оба типа элементов управления аналогичны и необходимый для их реализации код практически одинаков, не будем здесь приводить подробную инструкцию по его созданию. Достаточно лишь краткого описания основных этапов.

Обработчик события щелчка на флажке создается самым обычным способом — двойным щелчком на элементе управления в редакторе ресурсов диалогового окна.

С элементом управления флажок может быть ассоциирован объект класса CButton, a его функции GetCheck и SetCheck могут быть использованы для возвращения и установки состояния флажка. Значения констант для флажков, рассчитанных на три состояния, приведены в табл. 10.3.

Для привязки переменной-члена типа int к флажкам в группе можно воспользоваться специальной функцией DDX DDX_Check. Однако в отличие от функции DDX_Radio, связывающей одну целочисленную переменную (содержащую индекс выбранной кнопки) с группой переключателей, переменной, подключенной при помощи функции DDX_Check, присваивается значение 1 или 0 в зависимости от того, выбран ли данный флажок или нет. Следовательно, функцию DDX_Check необходимо вызывать для каждого флажка, состояние которого необходимо контролировать.


 

А также другие работы, которые могут Вас заинтересовать

23036. Задачі оптимізації структури лінійних динамічних систем з розподіленими параметрами 289.5 KB
  Задачі оптимізації структури лінійних динамічних систем з розподіленими параметрами 7. Розглянуті вище задачі моделювання початковокрайових умов див. Розглянемо варіант розвязання задачі моделювання коли розвязок її знаходиться шляхом обернення системи інтегральних рівнянь 7.14 помилки розвязання задачі моделювання 7.
23037. Дослідження та оптимізація структури дискретизованих динамічних систем 335.5 KB
  вказувалося що структура матриці С та векторів визначається вибором точок розміщення спостерігачів та керувачів системи проблеми оптимального розміщення яких будуть розвязані якщо будуть знайдені явні залежності матриці від елементів множин координат спостерігачів та координат керувачів. Будуть побудовані аналітичні залежності елементів матриці від довільного елемента множини та елемента множини а також формули диференціювання матриці по цих елементах. В процесі розвязання цієї проблеми будуть побудовані формули...
23038. Оптимізаційні методи в задачах моделювання дискретних початково-крайових умов 325 KB
  Постановка задачі та проблеми її розвязання. Поставлені вище задачі а також запропоновані там алгоритми їх розвязання досить широкі і можуть бути використані для оптимізації розміщення входіввиходів довільної лінійної системи в тому числі і для розвязання задачі оптимізації розміщення спостерігачівкерувачів при моделюванні дискретизованих початковокрайових умов дискретно розміщеними фіктивними зовнішньодинамічними збуреннями. Більш точною і більш природною постановкою задачі моделювання дискретизованих початковокрайових умов є...
23039. ОПЕРАЦІЙНІ ПІДСИЛЮВАЧІ (позитивний зворотній зв’язок) 436.5 KB
  Форма генерованої напруги може бути різноманітною: гармонічною прямокутною пилкоподібною або будьякою іншою. У підсилювачі із негативним зворотним звязком у відсутності вхідного сигналу будьяка флуктуація напруги на вході підсилена операційним підсилювачем на виході придушується ланкою негативного зворотного звязку тобто сама себе послаблює. В кінці кінців на виході встановиться напруга близька до напруги живлення додатної чи відємної в залежності від полярності початкової флуктуації. Припустимо що в момент включення на виході...
23040. Операційні підсилювачі (негативний зворотний зв`язок) 68.5 KB
  Вступ Операційний підсилювач це диференційний підсилювач постійного струму який в ідеалі має нескінченний коефіцієнт підсилення за напругою і нульову вихідну напругу за відсутністю сигналу на вході великий вхідний опір і малий вихідний а також необмежену смугу частот сигналів що підсилюються. Мета роботи ознайомитись із властивостями операційних підсилювачів опанувати способи підсилення електричних сигналів в ОП охопленому негативним зворотним зв`язком та способи виконання математичних операцій за допомогою ОП. Операційні...
23041. Пасивні RC-фільтри 129.5 KB
  Пасивний чотириполюсник не містить у собі джерела енергії; потужність що виділяється в елементі кола підключеного до виходу чотириполюсника менше потужності що споживається від джерела сигналу підключеного до входу чотириполюсника; на виході такого чотириполюсника ніколи не буває гармонік яких би не було у поданому на його вхід сигналі якщо цей чотириполюсника створений на базі лінійних елементів. Функцію перетворення будьякого чотириполюсника можна подати кількома варіантами в залежності від способу впливу...
23042. Напівпровідникові діоди. Вольт-амперна характеристика (ВАХ) 83.5 KB
  Вольтамперна характеристика ВАХ це залежність величини струму ІД крізь pn перехід діода від величини і полярності напруги UД прикладеної до діода. Виконання роботи передбачає використання осцилографа як характериографа з метою одержання на екрані двоканального осцилографа зображення ВАХ діода а також побудову ВАХ шляхом вимірювання деякої кількості величин струму ІД що відповідають певним величинам та полярності напруги UД і представленням результату у вигляді графіка. Залежність струму крізь діод від прикладеної до...
23043. Транзистори 88 KB
  Вихідна вольтамперна характеристика ВАХ біполярного транзистора це залежність величини струму колектора ІК від напруги між колектором та емітером UКЕ при певному струмі бази ІБ або напруги між базою та емітером UБЕ . Вихідна вольтамперна характеристика ВАХ польового транзистора це залежність величини струму стока ІС від напруги між стоком та витоком UСВ при певній напрузі між затвором та витоком UЗВ . Виконання роботи передбачає використання осцилографа як характериографа з метою одержання на екрані двоканального...
23044. ПІДСИЛЮВАЧІ НА ТРАНЗИСТОРАХ 103 KB
  Він є лише керувальним пристроєм а збільшення потужності сигналу відбувається за рахунок зовнішнього джерела напруги струмом в колі якого й керує транзистор. Характер зміни вхідного сигналу повинен передаватися на вихід без помітних спотворень. Кажуть що має місце інверсія фази сигналу. Як випливає з рівняння ЕберсаМола [1] імпеданс для малого сигналу з боку емітера при фіксованій напрузі на базі дорівнює rе = kT еIк 5 де k стала Больцмана Т абсолютна температура е заряд електрона Iк струм колектора.