11.18.2.3 - Отображение на экране контекстного меню

Функция, приведенная в следующем примере, показывает на экране контекстное меню.

Прикладная программа включает в себя ресурс меню, идентифицированный строкой "ShortcutExample". Строка меню просто содержит название меню. Прикладная программа использует функцию TrackPopupMenu, чтобы показать на экране меню, связанное с этим пунктом меню. (Сама строка меню не отображается, потому что TrackPopupMenu требует дескриптора меню, подменю или контекстного меню.)

VOID APIENTRY DisplayContextMenu(HWND hwnd, POINT pt)
{
	HMENU hmenu;		// меню верхнего уровня
	HMENU hmenuTrackPopup;	// контекстное меню>

	// Загрузим ресурс меню.

	if ((hmenu = LoadMenu(hinst, "ShortcutExample")) == NULL)
		return;

	// TrackPopupMenu не может показать на экране 
	// строку меню, так как получен дескриптор 
	// первого контекстного меню

	hmenuTrackPopup = GetSubMenu(hmenu, 0);

	// Покажем контекстное меню. Отследим правую кнопку мыши.

	TrackPopupMenu(hmenuTrackPopup,
		TPM_LEFTALIGN | TPM_RIGHTBUTTON,
		pt.x, pt.y, 0, hwnd, NULL);

	// Разрушим меню.
	DestroyMenu(hmenu);
}

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Владимир Соковиков - 06.10.2002