Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Добавление кода для команд подменю




Добавить код для обслуживания команд подменю ничуть не сложнее, чем для обычных команд. Чтобы добавить код для команды 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 не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...