11.19.1.38 - Функция ModifyMenu

(МодифицироватьМеню)

Функция ModifyMenu изменяет существующий пункт меню. Эта функция используется, чтобы определить содержание, внешний вид и поведение пункта меню.

Функция ModifyMenu была заменена функцией SetMenuItemInfo. Вы можете все еще использовать ModifyMenu, однако лишь тогда, если Вы не нуждаетесь в какой-либо из расширенных функций SetMenuItemInfo.

Синтаксис

BOOL ModifyMenu(
	HMENU hMnu,		// дескриптор меню
	UINT uPosition,		// пункт меню, который модифицируется
	UINT uFlags,		// флажки пункта меню
	PTR uIDNewItem,		// идентификатор пункта меню или дескриптор «выскакивающего меню»
				// или подменю
	LPCTSTR lpNewItem		// содержание пункта меню
);

Параметры
hMnu
Дескриптор меню, которое будет изменено.
uPosition
Определяет пункт меню, который будет изменен, как обусловлено параметром uFlags.
uFlags
Определяет флажки, которые управляют интерпретацией параметра uPosition и содержанием, внешним видом и характеристиками пункта меню. Этот параметр должен быть комбинацией одного из следующих обязательных значений и, по крайней мере, одно из значений, перечисленных в следующем разделе Замечаний.

uIDNewItem
Определяет или идентификатор измененного пункта меню или, если параметр uFlags имеет установленный флажок MF_POPUP, дескриптор "выскакивающего" меню или подменю.
lpNewItem
Указывает на содержание измененного пункта меню. Интерпретация этого параметра зависит от того, включает ли параметр uFlags в себя флажок MF_BITMAP, MF_OWNERDRAW или MF_STRING.

Возвращаемые значения
Если функция завершается успешно, величина возвращаемого значения - не ноль.
Если функция завершается с ошибкой, величина возвращаемого значения - ноль. Чтобы получать расширенные данные об ошибках, вызовите GetLastError.

Замечания
Если ModifyMenu заменяет пункт меню, который открывает "выскакивающее" меню или подменю, функция уничтожает старое "выскакивающее" меню или подменю и освобождает память, используемую им.
Для ускорителей клавиатуры, чтобы работать с растровыми или "собственными" (нарисованными пользователем) пунктами меню, владелец меню должен обработать WM_MENUCHAR сообщение. Для получения дополнительной информации см. Нарисованные пользователем ("собственные") меню и Сообщение WM_MENUCHAR.
Прикладная программа должна вызывать функцию DrawMenuBar всякий раз, когда меню изменяется, независимо от того, находится оно или нет в отображаемом окне. Чтобы изменить атрибуты существующих пунктов меню, значительно лучше использовать функции CheckMenuItem и EnableMenuItem.
Нижеследующий список описывает флажки, которые могут быть установлены в параметре uFlags:

Следующие группы флажков не могут быть использованы вместе:

MF_BYCOMMAND и MF_BYPOSITION
MF_DISABLED, MF_ENABLED и MF_GRAYED
MF_BITMAP, MF_STRING, MF_OWNERDRAW и MF_SEPARATOR
MF_MENUBARBREAK и MF_MENUBREAK
MF_CHECKED и MF_UNCHECKED

Windows 95/98/Me: ModifyMenuW поддерживается Microsoft Layer для Уникода. Чтобы использовать его, Вы должны добавить некоторые файлы в вашу прикладную программу, как намечено в общих чертах в Microsoft Layer для Уникода для оперативных систем Windows 95/98/Me.

За примером обратитесь к статье Настройки шрифта текстовых строк пункта меню.

Смотри также
AppendMenu, CheckMenuItem, DrawMenuBar, EnableMenuItem, SetMenuItemBitmaps, SetMenuItemInfo, WM_DRAWITEM, WM_MEASUREITEM

Размещение и совместимость ModifyMenu

Windows NT			Да 
Win95				Да 
Win32s				Да 
Импортируемая библиотека		user32.lib 
Заголовочный файл			winuser.h 
Unicode				WinNT
Замечания по платформе		Не имеется

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