BigEdu.ru

Сообщения меню приложения Windows

СООБЩЕНИЯ МЕНЮ ПРИЛОЖЕНИЙ WINDOWS

При смене подсвеченного элемента меню (если, к примеру, пользователь "пробегает" по элементам меню с помощью клавиш со стрелками вверх и вниз) в оконную процедуру посылается сообщение WM_MENUSELECT. Это сообщение посылают все элементы меню.

Когда же пользователь производит выбор (нажимает клавишу "Enter", к примеру), сообщение WM_COMMAND оконной процедуре посылают только обычные элементы меню. Запрещенные и "серые" элементы меню в этом случае никаких сообщений не посылают.

В элементах wParam и IParam посылаемых сообщений хранится информация, достаточная для того, чтобы программа смогла определить, какие действия ей необходимо выполнить случае выбора пользователем того или иного элемента меню.

Помимо обычного меню у окна в большинстве случаев есть еще и системное меню. Сказанное относится и к системному меню. Отличие между обычным меню и системным состоит в том, что оконной процедуре посылаются сообщения WM_SYSMENUSELECT и WM_SYSCOMMAND. Кроме этого, сообщения WM_SYSCOMMAND оконная процедура получает и в случае нажатия кнопок минимизации, максимизации и закрытия окна, которые находятся не в системном меню, а в правом углу заголовка окна.

Параметры сообщения WM_MENUSELECT. В младшем слове wParam оконная процедура получает сведения о том, какой элемент стал подсвеченным. Если учесть, что макросы LOWORD () и HIWORD () выделяют соответственно младшее и старшее слово 32-битного аргумента, и назвать источник сообщения uItem, то можно записать:

uItem = (UINT) LOWORD (wParam);

В зависимости от обстоятельств смысл uItem различается:

если подсвеченный элемент является конечным и не влечет за собой вызов popup-меню, то ultem содержит идентификатор элемента меню;

если подсвеченный элемент при выборе влечет за собой вызов popup-меню, то ultem содержит номер (индекс) этого элемента в том меню, в котором оно находится;

В старшем слове wParam содержатся характеристики подсвеченного элемента. Аналогично предыдущему,

fuFlags = (UINT) HIWORD (wParam).

Возможные значения fuFlags характеризуются идентификаторами, начинающимися с MF_ (табл.1).

Таблица 1

Характеристики подсвеченного элемента меню

Флаг Описание
MF_BITMAP Вместо строки в качестве элемента меню применяется bitmap
MF_CHECKED Элемент отмечаемый (со "значком")
MF_DISABLED Элемент запрещен
MF_GRAYED Элемент запрещен и отображается серым цветом
MF_HILITE Элемент подсвечен
MF_MOUSESELECT Элемент выбран мышью
MF_OWNERDRAW За прорисовку элемента отвечает не система, а программа
MF_POPUP Элемент вызывает появление рорир-меню более низкого уровня
MF_SYSMENU Элемент из системного меню

lParam содержит в себе хэндл того меню, которому принадлежит подсвеченный элемент. Обозначив хэндл меню как hMenu, получим:

hMenu = (HMENU) lParam;

Параметры сообщения WM_COMMAND. Как и в случае с WM_SELECTMENU, младшее слово wParam содержит сведения об источнике сообщения. Так как сообщение WM_COMMAND посылается только конечными элементами меню, то в младшем слове wParam содержится идентификатор выбранного элемента меню:

wID = LOWORD (wParam);

Старшее слово wParam указывает, от какого управляющего элемента пришло сообщение. Если сообщение пришло от меню, то это слово равно нулю, т.е.

wNotifyCode = HIWORD (wParam) = 0;

lParam в случае сообщения от меню ВСЕГДА равно NULL!

Параметры сообщения WM_INITMENU. Сообщение WM_INITMENU поступает перед отображением главного меню.

Параметр wParam равен дескриптору меню. Если сообщение WM_INITMENU обрабатывают, то возвращают 0. Обработка обычно сводится к изменению состояния элементов меню

Параметры сообщения WM_INITMENUPOPUP.

Это сообщение поступает перед отображением временного меню.

Параметр wParam равен дескриптору меню.

Младшее слово параметра lParam равно позиции этого меню в меню верхнего уровня:

uItem = (UINT) LOWORD (lParam);

Старшее слово lParam равно 1 для системного меню и 0 - для обычного.

Если это сообщение обрабатывают, то возвращают 0. Обработка обычно сводится к изменению состояния элементов меню.

Итак, меню имеет строгую древовидную структуру, которая начинается с меню первого уровня (оно обычно называется главным меню программы или menubar'ом и располагается сразу под заголовком окна). К этому меню первого уровня могут быть присоединены как конечные элементы меню, так и элементы, выбор которых приводит к появлению так называемых всплывающих (popup) меню, к которым, в свою очередь, присоединяются элементы очередного уровня и т.д. Перед началом создания меню вся его структура должна быть тщательно продумана. Неплохо, если бы программист имел перед глазами графическое представление этого меню.

Для создания меню необходимо выполнить следующие действия:

Выбрать подменю самого низкого уровня, которые содержат только конечные элементы меню, и создать их с помощью функций CreateMenu () или CreatePopupMenu () в зависимости от потребностей. Эти функции возвраща

Внимание, отключите Adblock

Вы посетили наш сайт со включенным блокировщиком рекламы!
Ссылка для скачивания станет доступной сразу после отключения Adblock!

Скачать
Контрольные работы по информатике и программированию СООБЩЕНИЯ МЕНЮ ПРИЛОЖЕНИЙ WINDOWS При смене подсвеченного элемента меню (если, к примеру, пользователь "пробегает" по элементам меню с
Оценок: 1001 (Средняя 5 из 5)

Наверняка у вас есть товары или услуги, продажа которых приносит вам максимальную прибыль. Для быстрого старта в сети вам необходимо создание посадочной страницы (одностраничного сайта), на которой будет размещена информация о маржинальных товарах/услугах интернет магазина. За 8 лет опыта разработки конверсионных страниц мы выработали оптимальную структуру, которая позволит привлекать через landing page больше продаж. На такую структуру «одевается» ваш контент — фирменный стиль, тексты, фотографии, уникальные торговые предложения, после чего страница выходит в свет. Разработка лендинга и запуск в сети — до 7 рабочих дней. Стоит отметить, что в разработку самой посадочной страницы входит и написание копирайтером продающих текстов для вашего бизнеса, чтобы каждый посетитель страницы захотел совершить покупку именно у вас. Результат: качественно разработаная продающая посадочная страница, которая готова приносить вам новых клиентов.

© 2016 - 2022 BigEdu.ru