Читайте также:
|
|
Меню — это список пунктов или имен, которые представляют возможные действия приложения. Пользователь может выбрать пункт меню при помощи мыши, клавиатуры или горячей клавиши.
Меню Resource позволяет вызывать редактор для создания или изменения ресурсов меню. Альтернативная (и часто предпочтительная) методика состоит в использовании при создании меню текстового редактора. Он может создавать и модифицировать описание меню в файле описания ресурсов (.RC). Этот файл содержит обыкновенный (не откомпилированный) текст.
Быстрые клавиши чаще всего используются создателями меню в качестве "клавиш быстрого доступа" для обращения к командам меню. Например, в меню есть 12 пунктов, каждый из которых выбирает соответствующий цвет фона. Пользователь может выбирать мышью из меню, а может использовать быстрые клавиши. Если используются быстрые клавиши, можно, например, выбирать цвет функциональными клавишами, и тогда меню вообще не будет появляться на экране.
Resource.h - Файл заголовка, создаваемый средой разработки; содержит определения символов.
Windows автоматически реагирует на выбор команды меню, генерирует сообщение о том, какой пункт выбран. Иконки, курсоры, битовые образы являются составной частью файла ресурсов.
Меню записывается с помощью спец. команд. Пример меню:
IDR_MENU1 MENU
BEGIN
POPUP “&Disk_Information”
BEGIN
MENUITEM “&Total Disk Space”, 40009
MENUITEM “&Free Disk Space”, IDM_TDS
MENUITEM “&Current Drive and Path”, 40010
MENUITEM SEPARATOR
MENUITEM “&Windows Version”, IDM_WV
END
POPUP “&Time/Date_Information”
BEGIN
MENUITEM “System T&ime”, IDM_TIME
MENUITEM “System &Date”, 40013
END
END
Для создания меню используются зарезервированные слова:
1. MENU – описатель создаваемого файла
2. POPUP – определяет ключевое слово для создаваемого меню
3. SEPARATOR – разделитель команд меню
4. MENUITEM – команды меню
Аналогом SEPARATOR является MENUBARBREAK. Команды меню записываются как строковые значения. Для обращения к командам меню могут использоваться идентификаторы, записываемые как символьные, так и константные.
Для использования «горячих» клавиш по умолчанию используется комбинация Alt + буква меню. Используемая буква определяется с помощью амперсанта(&).
5. BEGIN и END формируют группу команд главного меню
Для описания идентификатора меню используется префикс IDM_. Это не является обязательным требованием (установлено по умолчанию).
Кроме описанных ключевых слов могут применяться:
1. CHECKED – рядом с пунктом меню располагается отмена;
2. END – является последним пунктом выпадающего или статического меню;
3. GRAYED – пункт меню неактивен и выводится в списке пунктов меню бледным;
4. HELP – пункт меню является выравненным по правому краю статическим меню, выбираемым с клавиатуры;
5. INACTIVE – пункт меню выводится в списке, но не может быть выбран в данных обстоятельствах;
6. MENUBREAK – пункт меню помещается в новый столбец;
7. MENUBARBREAK – пункт меню помещается в новый столбец, пункты разделяются чертой;
8. OWNERDRAWN – за вывод пункта меню, включая выделенное неактивное о отмеченное состояние, отвечает владелец меню.
Акселераторы делают возможным вызов команды меню при нажатии на одну клавишу, которая назначается пользователем(F1-F12).
IDR_MENU1 MENU
BEGIN
POPUP “&Rectangle_Size”
BEGIN
MENUITEM “&small”, IDM_SMALL
MENUITEM “&Medium”, IDM_MEDIUM
MENUITEM “&Large”, IDM_LARGE
END
POPUP “Ba&ckground_Colors”
BEGIN
MENUITEM “Black&K\tF1”, IDM_BLACK
MENUITEM “&White\tF2”, IDM_WHITE
MENUITEM “&Red\tF3”, IDM_RED
MENUITEM SEPARATOR
MENUITEM “LT GR&EEN\tF9”, IDM_LTGREEN
MENUITEM “LT BL&UE\Tf10”, IDM_LTBLUE
END
END
Определение F1-F12 в MENUITEM не сделало их акселераторами. Для определения акселератора создается соответствующий файл:
IDR_ACCELERATOR1 ACCELERATORS
BEGIN
VK_F1, IDM_BLACK, VIRTKEY
NOINVERT
VK_F10, IDM_LTBLUE, VIRTKEY
NOINVERT
VK_F9, IDM_LTBLUE, VIRTKEY
NOINVERT
VK_F9, IDM_RED, VIRTKEY
NOINVERT
VK_F2, IDM_WHITE, VIRTKEY
NOINVERT
VK_F5, IDM_YELLOW, VIRTKEY
END
Акселераторы могут быть созданы в текстовом редакторе или с помощью мастера.
Описание акселератора содержится в файле ресурсов. При описании любого акселератора используется синтаксис:
event, id, [type] [NOINVERT] [SHIFT] [CONTROL]
Ключевые слова в [] не являются обязательными.
1. event описывает комбинацию клавиш, используемых в качестве акселератора; может быть записан целым числом, которое соответствует колу ASCII. Префикс VK не требует определения кода ASCII;
2. id – идентификатор акселератора;
3. type – содержит значения кода ASCII или виртуальные клавиши;
4. NOINVERT – при использовании выбираемых клавиш акселератора не будет выделяться пункт меню верхнего уровня;
5. SHIFT и CONTROL активизируют акселератор только при нажатии соответствующих клавиш.
Файл заголовков (MENU3.H)
В файле заголовков содержатся определения идентификаторов меню. Идентификаторы соответствуют следующим пунктам меню:
IDM_TDS общий объем дискового пространства
IDM_FDS объем свободного дискового пространства
IDM_DD принятый по умолчанию накопитель
IDM_WV текущая версия Windows
IDM_DATE текущая дата
IDM_TIME текущее время
Файл ресурсов (MENU3.RC)
В файле ресурсов для данного приложения содержится описание двух меню. Первое, Disk_Information, позволяет пользователю получить информацию, связанную с диском и номером версии. Второе меню, Time/Date_Information, предназначено для вывода времени и даты. Обратите внимание на то, что в описании первого выпадающего меню после идентификатора IDM_DD содержится элемент MENUBARBREAK. Результат такого описания показан на рис. 7.6.
Файл приложения (MENU3.C)
В данном приложении вся информации, предназначенная для вывода на экран, заносится в массив szMessage независимо от выбранного пункта меню. Данный массив описан как содержащий 50 символов. Реальная длина строки содержится в переменной sLength. Обе вышеупомянутые глобальные переменные описаны в начале приложения.
Информация о времени и дате содержится в структуре SYSTEMTIME.
Для обработки выбранных пунктов меню при помощи операторов case используется сообщение WM_COMMAND.
Общий объем дисковою пространства вычисляется при помощи функции GetDiskFrceSpace().Текущее время также запрашивается при помощи соответствующего пункта меню. В данном случае, вызывается функция GetSystemTiine().
Информация о времени и дате заносится в переменную st. которая представляет собой экземпляр структуры SYSTEMTIME (определенной в файле WINDOWS.Н или WINBASE.H). Ниже представлено описание структуры SYSTEMTIME:
typedef struct _J3YSTEMTIME {
WORD wYear;
WORD wMonth;
WORD wDayOfWeek;
WORD wDay;
WORD wHour;
WORD wMinute;
WORD wSecond;
WORD wMilliSeconds;
} SYSTEMTIME;
Другие пункты меню обрабатываются сходным способом.
Независимо от того, какой пункт меню был выбран пользователем, информация сохраняется в массиве szMessage и выводится в окно при обработке сообщения WM PA1NT. Выведенная в окне информация обновляется при выборе любого пункта меню, поскольку в конце блока обработки сообщения WM_COMMAND вызывается функция InvalidateRect().
Дата добавления: 2015-09-03; просмотров: 116 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Добавление битовых образов | | | Подготовительные работы и допуск к работе |