Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Связывание переключателей с кодом программы
Откройте метод OnRadio1(): void CChecksDlg::OnRadio1() { // TODO: добавьте код для обработки оповещений от элемента } Созданный обработчик будет вызываться, когда пользователь щелкает переключатель 1. В нем мы сообщим о действии пользователя, помещая в текстовое поле строку "Щелчок на 1 переключателе": void CChecksDIg::OnRadiol() { m_text = "Щелчок на 1 переключателе"; UpdateData(false); } Координация работы переключателей Обратите внимание: при установке переключателя метод-обработчик не предпринимает никаких попыток снять остальные переключатели. Дело в том, что три переключателя уже действуют как единая группа — они принадлежат одному окну, которое координирует их поведение. Когда пользователь щелкает на одном из переключателей, программа автоматически снимает остальные. Если бы мы воспользовались групповыми полями, как в следующем примере, можно было бы осуществить дальнейшую группировку переключателей, чтобы в любой момент в каждой подгруппе был установлен лишь один переключатель. Добавим код для второго и третьего переключателей: void CChecksDIg::OnRadio2() { m_text = "Щелчок на 2 переключателе"; UpdateData(false); } void CChecksDIg::OnRadio3() { m_text = "Щелчок на 3 переключателе"; UpdateData(false); } Программа radios готова. Запустите ее и щелкните, на каком-нибудь переключателе. Программа сообщает, на каком переключателе был сделан щелчок. Вы можете щелкать на переключателях в любой последовательности — устанавливается всегда лишь тот, который был щелкнут последним. Мы научились работать с переключателями в Visual C++! ПОДСКАЗКА: Чтобы получить или задать состояние переключателя в программе, следует воспользоваться методами GetState() или SetState(). Мы рассмотрели работу с флажками и переключателями по отдельности, но ещу не пытались организовать их совместное использование. Поскольку по своим возможностям эти управляющие элементы дополняют друг друга (флажкипозволяют выбрать любые варианты из списка, а переключатели ограничивают выбор пользователя всего одним), они часто используются вместе, примеромчего станет наша следующая программа. Совместное использование флажков и переключателей Представьте себе, что нам поручили написать приложение для цветочного магазина, предназначенного для выбора типа композиции букета и цветов дл него. Программа должна определить, какие цветы входят в букет, установить соответствующие флажки и вывести цену 6укета. Если пользователь выбирает другой тип букета, программа должна показать, какие цветы в него входят, и вывести цену. В этом примере "исключительность" переключателей сочетается со "свободой выбора", предоставляемой флажками. Давайте займемся созданием программы. Назовем ее seller. При помощи AppWizard создайте новый проект на базе диалогового окна, затем откройте в редакторе диалоговых окон окно с идентификатором IDD_SELLER_DIALOG. После удаления надписи TODO необходимо добавить в окно два групповых поля. Использование групповых полей Групповые поля предназначены для группировки элементов — как визуально, так и функционально. В частности, все переключатели внутри группового поля работают совместно, что позволяет вам разместить в диалоговом окне несколько независимых групп переключателей. Чтобы включить в диалоговое окно программы seller два групповых поля, просто перетащите их из палитры (третий инструмент сверху в левом столбце) в диалоговое окно. Редактор диалоговых окон снабжает созданные групповые поля подписью Staticоднако ее можно изменить: 1. Щелкните на групповом поле правой кнопкой мыши в редакторедиалоговых окон. 2. Выберите в контекстном меню команду Properties. 3. Введите в поле Caption новую подпись. Не забудьте выделить групповое поле, щелкая правой кнопкой на подписи, иначе будут выведены свойства диалогового окна в целом. В примере левое групповое поле называется Букет, а правое — Цветы. Мы хотим, чтобы Пользователь выбирал тип букета с помощью переключателя, а программа обозначала входящие в него цветы, устанавливая нужные флажки. Добавьте в группу Букетчетыре переключателя, а в группу Цветы— четыре флажка и присвойте им соответствующие подписи. С помощью редактора диалоговых окон выровняйте управляющие элементы по горизонтали и вертикали, по аналогии с предыдущими примерами. Добавьте в диалоговое окно текстовое поле. В ClassWizard создайте для него переменнуюm_text, чтобы упростить работу с его содержимым. Кроме того, свяжите с каждым переключателем метод-обработчик (от OnRadio1()до OnRadio4()) и откройте OnRadio1(): void CSellerDlg::OnRadio1() { // TODO: добавьте код для обработки оповещений от элемента } При установке переключателя необходимо расставить маркеры во флажках. Предположим, первый переключатель должен устанавливать все флажки. Но как изменить состояние флажков в программе? |
||
Последнее изменение этой страницы: 2018-04-12; просмотров: 354. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |