69658

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

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

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

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

Русский

2014-10-08

37.5 KB

0 чел.

Тема 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 необходимо вызывать для каждого флажка, состояние которого необходимо контролировать.


 

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

69132. Алгоритмічна конструкція повторення. Цикл з передумовою, постумовою, лічильником. Переривання циклу 83.5 KB
  У заголовку циклу зазначається умова завершення циклу а тіло циклу являє собою блок операторів що повторюються. Кожне виконання операторів тіла циклу супроводжується перевіркою умови завершення циклу і називається його ітерацією.
69133. Підпрограми, їх різновиди та способи використання. Процедури та функції користувача. Стандартні процедури та функції 83.5 KB
  Одним із найпростіших і найважливіших застосувань циклічних структур є генерування рекурентних послідовностей. Ефективність розв’язання деяких математичних задач цілком залежить від вибору рекурентної послідовності та способу її обчислення. До таких задач належать, зокрема...
69134. Полевые транзисторы. Их основные параметры и характеристики 44.5 KB
  Различают три основных разновидности транзисторов: Полевой транзистор с управляемым pnпереходом: з затвор с – сток и исток Входная характеристика: Выходная характеристика: МДП-транзисторы металл диэлектрик полупроводник транзисторы с встроенным каналом:...
69135. Транзисторы нового поколения: MOSFET, IGBT, SET 66 KB
  МДП-транзисторы металл диэлектрик полупроводник P=I2 R чем меньше сопротивление канала тем больше потери. Вольтамперные характеристики этих транзисторов близки к характеристикам полевых транзисторов: Входная характеристика...
69136. Тиристоры. Основные параметры и характеристики 41.5 KB
  Включает в себя положительную обратную связь Обратная связь – технологический прием позволяющий передать часть полезного сигнала с выхода устройства на его вход. Различают: положительную обратную связь; отрицательную обратную связь; Положительная обратная связь передает часть...
69137. Датчики и средства индикации. Принцип работы. Основные параметры и характеристики 68 KB
  Основные параметры и характеристики Датчики строятся на базе полупроводниковых приборов и их свойств изменять токи или напряжения в зависимости от их параметров. ТКЕ = 23 мв 0С Такие датчики могут работать от 40 0С до 85 0С G проводимость Простейшие датчики: тока и напряжения.
69138. Аналоговая схемотехника 76 KB
  Аналоговая схемотехника Различают: линейный и нелинейный сигналы. Линейный сигнал синус: Данный сигнал несет информацию по двум параметрам: амплитуда w круговая частота где; От частоты зависит тембр звуки. К импульсным нелинейным сигналам относится...
69139. Усилители 43.5 KB
  Усилитель устройство электронная схема предназначенное для преобразования энергии источника питания в полезный сигнал отдаваемый в нагрузку. УНЧ усилитель низких частот состоит из каскада предварительного усиления и усилителя мощности.
69140. Усилитель постоянного тока 60.5 KB
  Для дифференциального каскада различают два сигнала: дифференциальный полезный который нужно усилить; синфазный сигнал сигнал ошибки. Kuд коэффициент усиления дифференциального сигнала Kuд 1 Kuсф коэффициент ослабления синфазного сигнала Kuд 1 ООС вводится для стабилизации работы.