
Контрольные вопросы
Перечислите основные виды меню и укажите различия между ними.
Запишите алгоритм создания главного меню, состоящего из двух разделов, если в каждом разделе строки связаны с командами.
Для чего в цикле обработки сообщений в листинге 4.1 вызывают функцию TranslateMessage?
Какие меню посылают сообщения функции окна и какие меню нужно разрушать при обработке сообщения WM_DESTROY?
Каким образом можно послать сообщение WM_COMMAND с идентификатором команды, если связанная с этой командой строка заблокирована?
Чем отличаются плавающие меню от остальных видов меню?
Чем отличается генерация команды с помощью акселератора от генерации команды путем выбора строки меню?
В каком порядке нужно описать основные объекты приложения, если таблица акселераторов изменяется при обработке сообщений?
В чем преимущество использования виртуального кода в акселераторах?
Упражнения
Главное меню содержит строки "Невидимый курсор", "Обычный курсор" и "Выход". Создать плавающее меню с такими же строками. Чтобы курсор стал невидимым, вызвать функцию ShowCursor(0); видимым – ShowCursor(1).
Раздел "Пользователи" главного меню содержит список пользователей. При выборе пользователя в главном меню появляются дополнительные разделы. При смене пользователя меняются и эти разделы.
При открытии или создании документа появляется раздел "Правка" с единственной командой "Выделить". После выбора этой команды в этом разделе добавляются строки "Удалить" и "Копировать", а команда "Выделить" отмечается галочкой (которая убирается при повторном выборе). Если выбрать команду "Копировать", то элемент "Удалить" заменяется элементом "Вставить".
Главное меню содержит раздел "Файл", в котором перечислены строки с именами команд "Создать", "Открыть" и "Выход". После выбора строк "Создать" или "Открыть" добавить строки "Сохранить" и "Печать", а также раздел "Правка" со строками "Вырезать", "Вклеить" и "Копировать". Команды связать с акселераторами.
Главное меню содержит раздел "Файл" с именами команд "Создать", "Открыть", "Сохранить", "Закрыть", "Печать" и "Выход", а также раздел "Правка" со строками "Вырезать", "Вклеить" и "Копировать". После выбора команды "Закрыть" удалить раздел "Правка". Команды связать с акселераторами.
Главное меню содержит раздел "Рисунок" с именами четырех геометрических фигур. После выбора фигуры отобразить фигуру в определенной части окна. При нажатии правой клавиши мыши над любой отображенной фигурой на месте нажатия отобразить плавающее меню с соответствующими выбранной фигуре командами.
Главное меню содержит раздел "Файл" со строками "Создать", "Открыть" и "Выход". При выборе строки "Создать" или "Открыть" создать окно, которое содержит меню с разделами "Правка" и "Эффекты". Команды связать с акселераторами.
Главное меню содержит раздел "Файл" со строками "Создать", "Открыть" и "Выход". При выборе строк "Создать" или "Открыть" создать окно, которое содержит раздел меню "Фигуры" со списком имен геометрических фигур; при выборе имени отобразить фигуру с таким именем и пометить имя галочкой. При повторном выборе имени убрать фигуру и удалить галочку.
Главное меню содержит раздел "Фигуры" с именами геометрических фигур. При выборе названия фигуры в главное меню добавить раздел с названием фигуры и перечислением основных ее параметров в этом разделе. При повторном нажатии должны исчезнуть этот раздел и галочка.
Строки главного меню расположить в нескольких линиях, а строки плавающего меню – в одну линию.
Создать плавающее меню для выбора и установки вида курсора мыши. При выборе имени вида курсора курсор мыши должен принять соответствующий вид. Для загрузки и показа курсора использовать операторы вида
HCURSOR hCursor=LoadCursor(NULL, IDC_CROSS); SetCursor(hCursor);
Главное меню содержит раздел "Файл" со строками "Новый", "Открыть" и "Выход" и раздел "Помощь" со строками "Содержание" и "О программе". При выборе строки "Содержание" появляются строки "Введение", "Часть 1", "Часть 2" ... а при выборе строки "Часть ..." появляются строки "Раздел 1", "Раздел 2"...
Рабочую область окна полностью занимают два временных окна. Главное меню первого окна содержит раздел "Файл" со строками "Открыть" и "Выход". Если выбрать строку "Открыть", то во втором окне появляется главное меню с разделом "Правка".
Плавающее меню содержит строки "Спрятать", "Показать", "Масштаб", "Свойства". Строка "Масштаб" указывает на временное меню из четырех зависимых строк: "50%", "100%", "150%" и "200%", при выборе одна из которых отмечается кружочком.
Рабочую область окна приложения занимают два временных окна. Главное меню первого временного окна содержит раздел "Файл" с командами "Создать", "Открыть", "Демо-версия" и "Выход". Причем состоянием строки "Демо-версия" управляет второе окно.
Главное меню содержит раздел "Файл" со строками "Создать", "Открыть" и "Выход". При выборе команды "Создать" или "Открыть" добавить раздел "Правка" со строками "Вырезать", "Вклеить" и "Копировать". Команды только отображаемых строк связать с акселераторами.
Главное меню содержит раздел "Файл", в котором перечислены строки с именами команд "Создать", "Открыть" и "Выход", которые могут быть отмечены как зависимые переключатели. После выбора строк "Создать" или "Открыть" добавить раздел "Правка" с командами "Вырезать", "Вклеить" и "Копировать", которые могут быть отмечены как независимые флажки. Команды отмеченных строк связать с акселераторами.
Главное меню содержит раздел "Фигуры" с зависимым списком имен геометрических фигур. При выборе имени должна быть отображена только эта фигура и отмечено кружочком только это имя.
Раздел "Файл" содержит строки "Создать", "Открыть", "Демо- версия" и "Выход". При выборе строки "Создать" или "Открыть" создать перекрывающееся окно с разделом меню "Эффекты". Список строк раздела "Эффекты" зависит от состояния строки "Демо-версия". Команды отображенных строк меню связать с акселераторами.
Главное меню содержит раздел "Файл" со строкой "Открыть". При выборе этой строки в главное меню добавить раздел "Правка" со строками "Вырезать", "Копировать" и "Удалить", удалить строку "Открыть" и добавить строку "Закрыть". При выборе строки "Закрыть" вернуться к исходному состоянию. Команды отображенных строк меню связать с акселераторами.
Рабочую область окна приложения полностью занимает временное окно с пустым главным меню. Главное меню окна приложения содержит раздел "Файл" со строками "Открыть" и "Закрыть" (заблокирована). При выборе команды "Открыть" создать главное меню временного окна с разделом "Правка" со строками "Вырезать", "Копировать" и "Удалить". После этого заблокировать строку "Открыть" и разблокировать команду "Закрыть". При выборе строки "Закрыть" вернуться к исходному состоянию.
На месте нажатия правой клавиши мыши всплывает меню. Если курсор мыши ближе к верхнему или нижнему краю рабочей области, то строки меню выстроить в линию, иначе – в столбик.
Главное меню содержит раздел "Пользователи", в котором перечислены строки с именами типов пользователей. После выбора типа пользователя этот раздел исчезает и появляется раздел "Данные", в котором перечислены общие для всех типов пользователей и типичные только для выбранного типа строки данных. Команды отображенных строк связать с акселераторами.
Главное меню содержит раздел "Цвета" с пятью именами стандартных цветов Windows и раздел "Фигуры" с именами трех плоских фигур. После выбора цвета и фигуры отобразить фигуру выбранным цветом, а соответствующие строки меню отметить галочкой. При повторном нажатии должны исчезнуть эта фигура и галочки.
На месте нажатия правой клавиши мыши отобразить плавающее меню, отмеченные галочкой элементы которого указывают на временные меню, строки которых служат зависимыми переключателями.