Функция EnableMenuItem (winuser.h)

Включает, отключает или серым цветом указанный пункт меню.

Синтаксис

BOOL EnableMenuItem(
  [in] HMENU hMenu,
  [in] UINT  uIDEnableItem,
  [in] UINT  uEnable
);

Параметры

[in] hMenu

Тип: HMENU

Дескриптор меню.

[in] uIDEnableItem

Тип: UINT

Пункт меню для включения, отключения или серого цвета в соответствии с параметром uEnable . Этот параметр указывает элемент в строке меню, меню или подменю.

[in] uEnable

Тип: UINT

Управляет интерпретацией параметра uIDEnableItem и указывает, включен ли элемент меню, отключен или выделен серым цветом. Этот параметр должен быть сочетанием следующих значений.

Значение Значение
MF_BYCOMMAND
0x00000000L
Указывает, что uIDEnableItem предоставляет идентификатор пункта меню. Если ни MF_BYCOMMAND , ни MF_BYPOSITION флаг не указаны, флаг MF_BYCOMMAND является флагом по умолчанию.
MF_BYPOSITION
0x00000400L
Указывает, что uIDEnableItem задает отсчитываемое от нуля относительное положение пункта меню.
MF_DISABLED
0x00000002L
Указывает, что пункт меню отключен, но не выделен серым, поэтому его нельзя выбрать.
MF_ENABLED
0x00000000L
Указывает, что элемент меню включен и восстановлен из неактивного состояния, чтобы его можно было выбрать.
MF_GRAYED
0x00000001L
Указывает, что элемент меню отключен и выделен серым цветом, поэтому его нельзя выбрать.

Возвращаемое значение

Тип: BOOL

Возвращаемое значение указывает предыдущее состояние пункта меню ( MF_DISABLED, MF_ENABLED или MF_GRAYED). Если элемент меню не существует, возвращается значение -1.

Комментарии

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

Когда приложение задает флаг MF_BYCOMMAND , система проверяет все элементы, открывающие подменю в меню, определяемом указанным дескриптором меню. Таким образом, если нет повторяющихся пунктов меню, достаточно указать дескриптор меню в строке меню.

Функции InsertMenu, InsertMenuItem, LoadMenuIndirect, ModifyMenu и SetMenuItemInfo также могут задавать состояние (включено, отключено или серым цветом) элемента меню.

При изменении меню окна строка меню обновляется не сразу. Чтобы принудительно выполнить обновление, вызовите DrawMenuBar.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header winuser.h (включая Windows.h)
Библиотека User32.lib
DLL User32.dll
Набор API ext-ms-win-ntuser-menu-l1-1-0 (появилось в Windows 8)

См. также раздел

Основные понятия

DrawMenuBar

GetMenuItemID

InsertMenu

InsertMenuItem

LoadMenuIndirect

Меню

ModifyMenu

Справочные материалы

SetMenuItemInfo

WM_SYSCOMMAND