Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Диалоговое окно в качестве главного
Мы узнали много нового о диалоговых окнах. Теперь мы умеем создавать окна, добавлять в них управляющие элементы, связывать элементы с кодом программы, отображать окна и получать из них данные. Как показывает следующий пример, диалоговое окно может даже использовать в качестве главного окна программы. Иногда программа содержит много управляющих элементов, с которыми пользователь должен работать прямо из главного окна (например, программа-калькулятор со множеством кнопок). Visual C++ предоставляет такую возможность — вы можете назначить главным окном своей программы диалоговое окно. В следущем примере диалоговое окно с кнопкой Нажми меня и текстовым полем будет играть именно эту роль. Когда пользователь нажимает кнопку Нажми меня, в текстовом поле появляется надпись"Диалоговое окно!". ПОДСКАЗКА: Хотя кнопки ОК и Cancel в нашем примере остаются, их можно удалить, как и любые другие кнопки — достаточно выделить их в редакторе диалоговых окон и нажать клавишу Delete. Приступим к созданию новой программы с именем buttons: На шаге 1 AppWizard установите переключатель Dialog based, чтобы базовым классом для новой программы стал класс CDialog. Завершите создание проекта кнопкой Finish. Перейдите на вкладку Resources, откройте папку Dialogи щелкните в списке на строке главного окна программы, IDD_BUTTONSDIALOG. Запускается редактор диалоговых окон. Разместите в диалоговом окне кнопку с надписью Нажми меня и текстовое поле. Откройте ClassWizard, чтобы связать новую кнопку с кодом программы. Свяжите кнопку с обработчикомOnButtont (), как было сделано в предыдущем примере. Дважды щелкните на строке BN_CLICKED в списке Messages. В результате будет создан обработчикOnButton1(): void CButtonsDIg::OnButton1() { } Программа buttons готова. ПРИМЕЧАНИЕ: В этом примере мы не стали создавать новый класс диалогового окна, потому что AppWizard сделал это за нас во время генерации кода. Мы хотим поместить в текстовое поле строку "Диалоговое окно!". Конечно, это можно сделать при помощи переменной, связываемой с содержимым текстового поля (m_text из предыдущей программы). Тем не менее, существует более общий способ работы с управляющими элементами — можно присвоить имя всему элементу и работать с соответствующим объектом, а не с отдельным свойством элемента. Давайте посмотрим, как это делается. Запустите ClassWizard и перейдите на вкладку Member Variables, затем выберите из списка Control IDs строку IDC_EDIT1. Нажмите на кнопку Add Variable, и откроется окно Add Member Variable. Мы присвоим объекту текстового поля имя m_edit. Введите в поле Member variable name строку m_edit; убедитесь, что в списке Categoryвыбран пункт Control, а в списке Variable— CEdit; нажмите кнопку ОК. Появляется новая переменная m_edi Теперь у нас есть объект для работы с текстовым полем в диалоговом окне. Мы можем работать с ним напрямую и пользоваться всеми его методами. Методы класса CEdit перечислены в табл. 6.2. Таблица 6.2. Методы класса CEdit
Класс CEditявляется производным от CWindow, а последний содержит метод SetWindowText() для задания текста окна, поэтому содержимое текстового поля можно задать следующим образом: void CButtonsDIg::OnButton1() { m_edit.SetWindowText(CString("Диалоговое окно!")); } Подготовка закончена — запустите программу и нажмите кнопку Нажми меня.Наш текст появляется в текстовом поле. Мы научились использовать диалоговое окно в качестве главного окна программы. Подобная возможность чрезвычайно полезна, потому что редактор диалоговых окон позволяет легко добавлять и настраивать управляющие элементы. Флажки и переключатели Сейчас мы исследуем две новые разновидности управляющих элементов: флажки и переключатели. В Visual C++ они на самом деле являются кнопками, но с иным стилем, чем те, что встречались нам ранее (простые кнопки после нажатия возвращаются в исходное состояние). Наверняка вам приходилось встречать в Windows флажки — маленькие квадратики, либо пустые, либо содержащие пометку в виде "галочки". Если щелкнуть на флажке, его состояниеменяется на противоположное: из установленного он становится снятым и наоборот. Флажки позволяют выбрать один или несколько вариантов из предложенного списка. Переключатели, в отличие от флажков, позволяют выбрать всего один вариант, например, задать текущий день недели (понедельник, вторник, среда и т. д.). Внешне они напоминают маленькие круглые кнопки. При установке переключателя в центре круга появляется черная точка. При щелчке переключатель, как и флажок, изменяет свое состояние на противоположное. Еще одно отличие от флажков состоит в том, что переключатели объединяются в группы и работают совместно. В любой момент времени в группе может быть установлен лишь один переключатель. При его выборе все остальные переключатели группы снимаются, так что черная точка никогда не будет присутствовать в нескольких переключателях сразу. В Visual C++ существует два способа группировки переключателей: либо вы располагаете их внутри специального управляющего элемента (группового поля), либо просто помещаете в одно окно (то есть все переключатели внутри окна работают вместе даже при отсутствии группового поля). Здесь будут рассмотрены оба способа. Наконец, мы объединим флажки и переключатели в одной программе. Мы напишем маленькое приложение для цветочного магазина, в котором пользователь сможет выбрать тип композиции букета (при помощи переключателей, позволяющих выбрать всего один вариант из нескольких), а программа покажет, какие цветы входят в выбранный букет (для этого используются флажки — обратите внимание на то, что несколько флажков могут быть установлены одновременно). Начнем с программы для работы с флажками. Работа с флажками Мы используем диалоговое окно в качестве главного, потому что это облегчит создание и размещение флажков в окне. Когда пользователь щелкает на одном из трех флажков, в текстовом поле появляется строка с описанием. Создайте проект программы checksи установите переключатель Dialog based во время работы AppWizard. После того как программа будет создана, откройте ее главное диалоговое окно с идентификатором IDD_CHECKS_DIALOG в редакторе диалоговых окон. Прежде всего, удалите надпись "//TODO: Place dialog controls here" (выделите ее и нажмите клавишу Del). Теперь мы добавим в окно элементы, необходимые для программы checks, — три флажка и текстовое поле. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2018-04-12; просмотров: 366. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |