![]() Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Добавление кода для команд подменю
Добавить код для обслуживания команд подменю ничуть не сложнее, чем для обычных команд. Чтобы добавить код для команды Sub Item 1, найдите вClassWizard идентификатор ID_SUBMENUS_SUBITEM1и создайте для него обработчик (при использовании Messages: COMMAND): void CFullmenusView::OnDemoSubmenusSubitem1() { } Мы включим в объект документа строковый объект StrlngData и, когда пользователь выполнит команду Sub Item 1, поместим в него соответствующий текст: void CFullmenusView::OnDemoSubmenusSubitem1() { CFullmenusDoc* pDoc == GetDocument(); ASSERT_VALID(pDoc); pDoc->StringData = "Выбрана команда Sub Item 1."; Invalidate(); } Обработчик команды Sub Item 2выглядит аналогично, отличается лишь выводимая строка: void CFullmenusView::OnDemoSubmenusSubitem2() { CFullmenusDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); pDoc->StringData = "Выбрана команда Sub Item 2."; Invalidate(); } He забудьте включить в метод OnDraw()код для вывода текста по аналогии с предыдущей программой menus. Программа готова. Меню Demo содержит три команды: первая из них заблокирована, вторая помечена, а третья открывает подменю с двумя дополнительными командами. Кроме того, можно увидеть акселератор и клавиши ускоренного вызова. На панели инструментов появилась новая кнопка. Если задержать на ней указатель мыши, на экране отображается подсказка. Щелчок на этой кнопке действует так же, как и выбор команды Sub Item 1. Программа fullmenusработает в полном соответствии с нашими планами. В процессе разработки мы узнали много нового о работе с меню в Visual C++: от подсказок до кнопок на панелях инструментов; от пометки до блокировки команд; от клавиш ускоренного вызова до акселераторов. Создание диалоговых окон В этой главе мы научимся создавать диалоговые окна и использовать их в программах на Visual C++. Наверняка вам уже приходилось видеть диалоговые окна с кнопками, списками и другими элементами, предназначенными для передачи информации в программу. Одно из важнейших преимуществ диалоговых окон перед прочими элементами в Visual C++ заключается в том, что в них значительно проще располагатьуправляющие элементы(кнопки, текстовые поля, флажки и т. д.). Более того, в Visual C++ для этого имеется специальный инструмент — редактор диалоговых окон. Сначала мы узнаем, как создать диалоговое окно и как добавить в него управляющие элементы. Затем мы научимся связывать управляющие элементы с кодом программы и обращаться к различным свойствамэлементов, например, к содержимому текстового поля. Когда пользователь убирает диалоговое окно с экрана, мы прочитаем занесенную им информацию (как правило, диалоговые окна и предназначены для получения информации от пользователя). Кроме того, в этой главе рассмотрена чрезвычайно полезная возможность Visual C++ — превращение диалогового окна в главное окно программы. Иначе говоря, мы отказываемся от традиционных объектов вида и документа и делаем диалоговое окно главным. Простота размещения элементов в диалоговом окне и последующей работы с ними делает такую возможность весьма привлекательной. Если ваша программа предоставляет в распоряжение пользователя ограниченный набор управляющих элементов, такой вариант может пригодиться. Начнем с создания простейшей программы с диалоговым окном. Создание первого диалогового окна На примере первой программы с диалоговыми окнами, dialogs, мы рассмотрим все аспекты работы с ними. В меню Fileбудет включена новая команда, Show Dialog…. Обратите внимание на многоточие в конце команды — оно показывает, что данная команда вызывает диалоговое окно; в Windows такое обозначение является стандартным. Пpи выборе этой команды мы выведем на экран диалоговое окно с кнопками ОК, Cancel, Нажми меня и текстовым полем. При нажатии кнопки Нажми меня в текстовом поле должна появляться строка "Текст в диалоговом окне". Когда пользователь нажмет кнопку ОК, диалоговое окно исчезнет с экрана. Тем не менее, диалоговые окна чаще всего служат для передачи информации в программу, поэтому мы передадим содержимое текстового поля в программу и выведем его в клиентской области. Создайте проект однодокументной (SDI) программы с именем dialogsи в редакторе меню включите в меню Fileкоманду Show Dialog.... Воспользуйтесь ClassWzard и включите в программу метод для обработки данной команды, OnFileShowDialog(): void CDialogsView::OnFileShowdialog() { // TODO: добавьте код обработки команды } Когда пользователь выбирает в меню эту команду, на экране должно появиться диалоговое окно. Но как это сделать? Оказывается, мы должны создать новый класс диалогового окна и затем объявить в методе OnFileShowDialog() его объект. Для отображения диалогового окна в модальном режиме используется метод DoModal() этого класса. Термин "модальный режим" означает, что пользователь не сможет продолжать работу с программой, пока не закроет диалоговое окно. Давайте посмотрим, как создается класс диалогового окна. Создание диалогового окна Чтобы создать диалоговое окно, выполните команду Insert>Resourceв Visual C++. Появляется окно Insert Resource. Выделите в списке строку Dialogи нажмите кнопку New. Кнопка Newзапускает редактор диалоговых окон. В редакторе уже присутствует "заготовка" для создаваемого окна. Диалоговые окна, как и меню, относятся к "ресурсам" Windows-программ. Нашему диалоговому окну присвоен идентификатор IDD_DIALOG1. В нем уже размещены две кнопки — ОКи Cancel. Они присутствуют почти во всех диалоговых окнах; кнопка ОКподтверждает предыдущие действия пользователя, а кнопка Cancelотменяет их. Если пользователь закрывает диалоговое окно кнопкой ОК, метод DoModal() возвращает значение IDOK, а при закрытии окна кнопкой Cancel DoModal() возвращает IDCANCEL. В правой части окна видна палитра с инструментами редактора диалоговых окон. Мы воспользуемся ею, чтобы добавить в диалоговое окно дополнительные управляющие элементы — кнопку и текстовое поле. ПРИМЕЧАНИЕ: В Windows принято всегда включать кнопку Cancel в диалоговые окна, чтобы пользователь мог отменить ошибочный вызов окна. |
||
Последнее изменение этой страницы: 2018-04-12; просмотров: 409. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |