Некоторые типы объектов определяются в Windows как 242s1819c ресурсы. Ресурсы - это объекты, которые используются в программе, но не определяются в ней. Это касается меню, иконок, диалогов и графических растровых изображений. Поскольку меню является ресурсом, прежде чем включать его в программу, необходимо изучить, как 242s1819c работать с ресурсами.
Ресурсы создаются отдельно от текстов программы и добавляются в ЕХЕ-файл при компоновке программы. Они содержатся в файлах ресурсов, имеющих суффикс RC. Имя файла ресурсов иногда совпадает с именем ЕХЕ-файла Вашей программы. Например, если именем программы является Example.exe, файл ресурсов можно назвать как 242s1819c Example.rc (однако - это совсем необязательно).
Некоторые ресурсы являются текстовыми файлами, которые могут создаваться при помощи обычного текстового редактора. Такие текстовые ресурсы обычно описываются внутри файла ресурсов. Некоторые ресурсы, такие как 242s1819c иконки, проще всего строить, используя редактор ресурсов; но файл ресурсов, тем не менее, должен содержать ссылки на них. Примеры файлов ресурсов, приведенные в этой главе, являются просто текстовыми файлами, поскольку меню описываются с помощью обычного текста.
Файлы ресурсов не являются программами на С или C++. Они используют специальный язык ресурсов и компилируются компилятором ресурсов, генерирующим из RC-файлов специальные RES-файлы, которые могут компоноваться с Вашей программой.
Компиляция RC-файлов. Файлы ресурсов непосредственно не используются Вашей программой, - они должны быть преобразованы во внутренний формат, используемый при компоновке. После создания RC-файла необходимо скомпилировать его в RES-файл, используя компилятор ресурсов (компилятор ресурсов чаще всего называется rc.exe, но может иметь и другое имя). Как компилировать ресурсы - зависит от используемого Вами компилятора. Кроме того, некоторые интегрированные средства программирования делают это автоматически. В любом случае в результате будет получен RES-файл, который нужно скомпоновать с Вашей программой, чтобы получить готовое приложение для Windows.
MenuName MENU [параметры]
MenuName - это имя меню (оно может быть также макроименем, представляющим целочисленный идентификатор меню, однако все примеры, приведенные в книге, для обращений к меню будут использовать строковые имена). Ключевое слово MENU обозначает начало определения меню. Имеется также несколько параметров, которые могут быть указаны при создании меню. Они приведены в 4.3; их макроимена определены все в том же файле Windows.h. Все примеры этой книги просто используют параметры по умолчанию и не задают их в описаниях меню.
Параметры MENU
DISCARDABLE | ||
FIXED | ||
LOADONCALL | ||
MOVEABLE | ||
PRELOAD |
В Windows имеется два типа элементов меню: MENUITEM POPUP MENUITEM POPUP MENUITEM POPUP
MENUITEM "Имя", MenuID[,параметры]
POPUP "имя" [,параметры]
MenuID - это уникальный целочисленный идентификатор, ассоциированный с данным элементом меню; этот идентификатор передается в программу, если пользователь выбирает этот элемент меню. Обычно такие идентификаторы определяются как 242s1819c макроимена в отдельном файле, включаемом и в программу, и в RC-файл. Значение параметров (определенные в Windows.h) приводятся в таблице 4.4.
CHECKED |
Рядом с именем меню отображается отметка ("птичка"); не применимо к элементам меню верхнего уровня |
|
GRAYED | ||
HELP |
Может быть связан с элементом Помощь. Применимо только к элементам типа MENUITEM |
|
MENUBARBREAK | ||
MENUBREA |
То же, что и MENUBARBREAK, за исключением того, что в этом случае не используется разделительная линия |
Menu.rc:
include "Menu h"
MYMENU MENU
POPUP "& "
MENUITEM "& ", IDM_ETA
MENUITEM "& ", IDM_THETA
MENUITEM "&Помощь", IDM_HELP
}
MYMENU IDM Menu h
Знак «коньюнкции» & в имени элемента меню означает, что буква, следующая за ним, является «горячей клавишей» для выбора данного элемента. То есть, когда соответствующее меню становится активным, нажатие «горячей клавиши» приводит к выбору элемента меню. «Горячая клавиша» не обязательно должна быть первой буквой в имени элемента меню, но она не должна дублировать «горячие клавиши» других элементов этого меню.
Menu h
#define IDM_ALPHA 101
#define IDM_BETA 102
#define IDM_GAMMA 103
#define IDM_EPSILON 104
#define IDM_ZETA 105
#define IDM_ETA 106
#define IDM_THETA 107
define IDM HELP 108
|