В файле ресурсов может быть описано несколько шаблонов меню, но имеется только одна таблица строк. Поэтому она начинается указанием типа ресурса
Включение меню в окно приложения
STRINGTABLE, но не имеет имени экземпляра ресурса. В программе чтение строки с кодом uID из таблицы ресурсов в массив lpBuffer выполняется функцией LoadString, синтаксис которой приведен ниже:
int LoadString( НINSTANCE hlnstance. //Дескриптор приложения.
UINT uID. //Код-идентификатор считываемой строки. LPTSTR lpBuffer. //Адрес буфера, получающего строку, int nBufferMax //Размер буфера.
):
Диалог с пользователем становится более дружественным, если при остановке курсора мыши на пункте меню выводить из таблицы строк закрепленную за пунктом подсказку. Это можно реализовать стандартными средствами API или просто читая подсказку из ресурса при помощи функции LoadStri ng().
Теперь нужно вставить в заголовочный файл resource.h следующую строку:
#define IDR_MENU1 А101
Эта строка заставит препроцессор в исходных текстах заменить IDR_MENU1 на значением А101. После этого следует заново построить проект. Меню в окне исчезнет, потому что при регистрации оконного класса IDR_MENU1 в операторе wc. 1 pszCl assName = "IDR_MENU1" название ресурса является текстовой строкой. Препроцессор ее не анализирует и не заменит IDR_MENU1 на А101. Если же данный оператор записать как wc.lpszClassName = "А10Г, то меню будет работать. Таким образом, имя ресурса, указанное в шаблоне, можно переопределить в заголовочном файле. Как и в файлах с исходным текстом программ, препроцессор посмотрит текст файла ресурсов и сделает подстановку (А101 вместо IDR_MENU1). Поэтому заголовочный файл resource.h включается и в шаблон меню, и в исходный текст с операцией регистрации оконного класса.
Теперь следует добавить в файл resource.h строку #def і ne IDR_MENU1 201. Чтобы в этом случае проект остался работоспособным, при регистрации оконного класса в поле wc. 1 pszCl assName надо занести строку #201 или целое число 201 при помощи простой конструкции