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


 

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

27658. Понятие и виды преступлений, ставящих в опасность жизнь и здоровье. Оставление в опасности (ст. 125 УК). Отличие этого преступления от неоказания помощи больному (ст. 124 УК) 30.5 KB
  Убийство; Убийство матерью новорожденного ребенка; Убийство совершенное в состоянии аффекта; убийство совершенное при превышении пределов необходимой обороны или при превышении мер необходимых для задержания лица совершившего преступление; Причинение смерти по неосторожности; Доведение до самоубийства; Умышленное причинение тяжкого вреда здоровью; Умышленное причинение средней тяжести вреда здоровью; Причинение тяжкого или средней тяжести вреда здоровью в состоянии аффекта; Причинение тяжкого или средней тяжести вреда здоровью при...
27660. Понятие и виды стадий совершения умышленного преступления. Значение обнаружения умысла и его ненаказуемость 27.5 KB
  Понятие и виды стадий совершения умышленного преступления. Стадии совершения преступления это этапы реализации преступного умысла: приготовление к преступлению; покушение на преступление; окончание преступления. ответственности является состав преступления; разные стадии характеризуются разной степенью общественной опасности; стадия преступления позволяет установить иные элементы состава преступления приготовление к преступлению осуществляется только с прямым умыслом. В зависимости от степени определенности выделяют: определенный...
27661. Понятие и признаки кражи (ст. 158 УК). Отличие этого преступления от грабежа (ст. 161 УК). Постановление Пленума Верховного Суда РФ от 27 декабря 2002 г. № 29 «О судебной практике по делам о краже, грабеже и разбое» 36 KB
  Кража тайное хищение чужого имущества. Грабеж открытое хищение чужого имущества 1. Объективную сторону кражи составляет тайное изъятие чужого имущества из законного владения. N 29 указал что уголовная ответственность за кражу совершенную группой лиц по предварительному сговору наступает и в тех случаях когда согласно предварительной договоренности между соучастниками непосредственное изъятие имущества осуществляет один из них.
27663. Понятие и признаки объективной стороны преступления. Понятие уголовно-наказуемого действия и бездействия. Понятие и виды общественно-опасных последствий. Значение объективной стороны 43 KB
  Объективная сторона преступления это основной элемент состава преступления характеризующийся как внешнее проявление общественно опасного посягательства протекающего в определенных условиях месте и времени и причинившего вред охраняемым уголовным законом общественным отношениям. При анализе объективной стороны различают следующие признаки: 1 общественно опасное деяние в форме действия или бездействия; 2 общественно опасное последствие; 3 причинная связь между деянием и последствием; 4 место время способ обстановка орудия и...
27665. Понятие и признаки покушения на преступление. Виды покушения и их наказуемость. Добровольный отказ от преступления и его признаки. Отличие добровольного отказа от деятельного раскаяния 42.5 KB
  Добровольный отказ от преступления и его признаки. непосредственно направленные на совершение преступления если при этом преступление не было доведено до конца по не зависящим от этого лица обстоятельствам. Оконченным считается такое покушение когда виновный совершил все действия бездействия которые он считал необходимыми для завершения преступления однако преступный результат не наступил по объективным т. Неоконченное преступление бывает в том случае когда виновный не совершил всех тех действий бездействия которые по его...
27666. Понятие и признаки разбоя (ст. 162 УК). Характер физического и психического насилия при разбойном нападении. Отличие разбоя от насильственного грабежа 40 KB
  Это преступление посягает на два объекта: собственность и личность жизнь и здоровье потерпевшего. Нападение это агрессивные и внезапные для потерпевшего действия виновного соединенные с насилием или угрозой его применения; к нападению относятся не только открытые насильственные действия но также и нанесение удара сзади выстрел из засады приведение потерпевшего в бессознательное состояние путем применения опасных для жизни и здоровья сильнодействующих ядовитых или одурманивающих веществ и др. Поэтому как разбой оцениваются случаи...