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


 

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

986. Месторождение Тенгиз 676 KB
  Геолого-промысловая характеристика месторождения. Определение забойных давлений оценка коэффициентов продуктивности скважин по данным поверхностных замеров. Оценка эффективности закачки газа по результатом гидродинамических исследований скважин. Основы системы оперативного контроля за разработкой нефтегазоконденсатных месторождений на начальной стадии.
987. Проектирование сопроцессора для умножения чисел в обратном коде 417.5 KB
  Разработка функциональной схемы операционного автомата. Особенности реализации Узлов спецпроцессора выполненных на реальных микросхемах. Разработка структурной схемы управляющего автомата. Описание функциональных узлов операционного автомата.
988. Финансово-экономический анализ предприятия агропромышленного комплекса 714 KB
  Классификация основных методов и приемов финансово-экономического анализа предприятия и его информационная база. Виды деятельности, форма собственности и основные технико-экономические показатели предприятия. Анализ статей баланса, их структуры и динамики, оценка ликвидности баланса.
989. Расчет и проектирование коническо-цилиндрического редуктора 739.5 KB
  Частота вращения тихоходного вала редуктора. Выбор материалов и допускаемые напряжения. Определение геометрических размеров передач. Определение геометрических размеров зубчатых колес. Определение сил в конической зубчатой передаче. Выбор материалов и допускаемые напряжения.
990. Планирование деятельности предприятия 496 KB
  Составление сметы расходов на производство и реализацию продукции. Определение плановой величины материальных расходов. Расчет величины прочих расходов на производство и реализацию продукции.
991. Электропитающие системы и электрические сети 236 KB
  Баланс активной мощности и выбор генераторов ТЭЦ. Обоснование схемы и напряжения электрической сети. Регулирование напряжения. Расчет установившегося режима электрической сети. Приведение нагрузок узлов и мощности ТЭЦ к стороне ВН.
992. Методы управления рисками в системе ипотечного кредитования 422 KB
  Основные принципы и структурные элементы системы ипотечного кредитования. Европейская (одноуровневая) модель ипотечного кредитования. Современная американская (двухуровневая) модель ипотечного кредитования. Законодательное обеспечение системы ипотечного кредитования в Российской Федерации. Классификация методов управления рисками в системе ипотечного кредитования. Обеспечение кредитного обязательства рыночной стоимостью предмета ипотеки.
993. Методы поиска минимума функции на отрезке. Программная реализация 579.5 KB
  Нахождение минимума функции на заданном отрезке - одна из простейших задач в разделе численных методов анализа. Существует множество различных способов определения минимума функции с разным количеством итераций и уровнем определения точности. Так же возможно комбинировать некоторые способы для достижения большей эффективности алгоритма.
994. Математические методы и исследование операций в экономике 662.91 KB
  Диагностика функционирования рыночных механизмов на предприятии. Жизненный цикл конкурентного преимущества фирмы. Внешние сигналы о возможных изменениях состояния. Сканирование внешней и внутренней среды фирмы — условие обнаружения слабых сигналов о надвигающемся кризисе.