Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
43-70_otvety_na_teplogo.docx
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
87.53 Кб
Скачать

59.Имена ресурсов, использование макроса makeintresource().

MAKEINTRESOURCE (make an integer into a resourсe string — преобразовать целое в строку ресурса) является макросом, определенным в заголовочных файлах Windows, который преобразует число в указатель, но со старшими 16 разрядами, установленными в нуль. Рассмотрим данный макрос на примере иконок.

hIcon = LoadIcon (hInstance, MAKEINTRESOURCE (125));

//это значит, что второй параметр является числом, а не указателем на символьную строку.

LoadIcon(NULL, IDI_APPLICATION);

Поскольку параметр hInstance установлен в NULL, Windows узнает, что этот значок является предопределенным.

IDI_APPLICATION также определяется в заголовочных файлах Windows с использованием макроса MAKEINTRESOURCE:

#define IDI_APPLICATION MAKEINTRESOURCE(32512)

60.Структура главного меню. Описание меню в файле ресурсов.

Меню можно создать тремя разными способами. Наиболее обычным (и самым простым) является определение меню в файле описания ресурсов в форме шаблона меню, например:

MyMenu MENU

{

[список элементов меню]

}

MyMenu — это имя меню. Вы ссылаетесь на это имя в структуре класса окна. Обычно имя меню такое же, как имя приложения.

Внутри квадратных скобок можно использовать либо инструкцию MENUITEM, либо POPUP. Инструкция MENUITEM имеет следующий формат:

MENUITEM "&Text", id [, признаки]

Формат инструкции POPUP:

POPUP "&Text" [, признаки]

{

[список элементов меню]

}

Вместо фигурных скобок можно использовать ключевые слова BEGIN и END. Текст, выводимый для каждого пункта меню должен быть заключен в парные кавычки. Амперсант (&) вызывает подчеркивание следующего за ним символа при выводе на экран. Windows ищет этот же символ, когда пользователь выбирает элемент меню с использованием клавиши <Alt>. Если не включить амперсант в текст, то в тексте меню не будет подчеркнутых символов, и Windows будет использовать первую букву текста при поиске.

При определении всплывающего меню допускаются следующие инструкции:

MENUITEM "text", id [, признаки]

а также:

MENUITEM SEPARATOR

а также:

POPUP "text" [, признаки]

MENUITEM SEPARATOR рисует во всплывающем меню горизонтальную черту. Эта черта часто используется для разделения групп, связанных по смыслу и назначению опций.

61. Сообщение от меню. Идентификаторы действия меню. Индексы элементов Popup menu

// Ответ не был найден лишь частично, остальное писалось от себя

При взаимодействии с меню, Windows посылает главному окну сообщение WM_COMMAND с идентификатором действия, такие сообщения посылаются только для

разрешенных пунктов меню.

-----------------------------------------------------------------------------------------------------------

Все идентификаторы пунктов меню определяются в заголовочном файле. Этот файл должен быть включен (с помощью инструкции #include) в файл описания ресурсов и в файл с исходным текстом программы. Идентификаторы начинаются с букв IDM. Значения идентификаторов не обязательно должны быть последовательными.

В файле ресурсов идентификаторы записываются после имени действия, например:

MENUITEM "&New", IDM_NEW

IDM_NEW – и есть тот самый идентификатор пункта меню по именем «New»

-----------------------------------------------------------------------------------------------------------

Индексы каждого нового элемента POPUP начинаются с нуля. Допустим, есть такое меню:

«Файл» | «Вид» | «Помощь»

В пункте «Файл» есть такие подпункты: «открыть», «сохранить», «выход»

Так вот, пункт «Файл» будет иметь индекс «0», «Вид» – «1», и так далее.

Подпункты в меню «Файл» так же будут иметь индексы, начинающиеся с нуля:

«открыть» – индекс «0», «сохранить» – индекс «1», «выход» – индекс «2» и т.д.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]