Функция GetMenuState (winuser.h)
Извлекает флаги меню, связанные с указанным элементом меню. Если элемент меню открывает подменю, эта функция также возвращает количество элементов в подменю.
Синтаксис
UINT GetMenuState(
[in] HMENU hMenu,
[in] UINT uId,
[in] UINT uFlags
);
Параметры
[in] hMenu
Тип: HMENU
Дескриптор для меню, содержащего элемент меню, флаги которого необходимо извлечь.
[in] uId
Тип: UINT
Элемент меню, для которого должны быть получены флаги меню, как определено параметром uFlags .
[in] uFlags
Тип: UINT
Указывает, как интерпретируется параметр uId . Этот параметр может принимать одно из указанных ниже значений.
Возвращаемое значение
Тип: UINT
Если указанный элемент не существует, возвращаемое значение равно -1.
Если элемент меню открывает подменю, байт низкого порядка возвращаемого значения содержит флаги меню, связанные с элементом, а байт высокого порядка — количество элементов в подменю, открытых элементом.
В противном случае возвращаемое значение будет маской (побитовое ИЛИ) флагов меню. Ниже приведены флаги меню, связанные с элементом меню.
Возвращаемый код/значение | Описание |
---|---|
|
Рядом с элементом помещается метка проверка (только для раскрывающихся меню, подменю и контекстных меню). |
|
Элемент отключен. |
|
Элемент отключен и выделен серым цветом. |
|
Элемент выделен. |
|
Это то же самое, что и флаг MF_MENUBREAK , за исключением раскрывающихся меню, подменю и контекстных меню, где новый столбец отделен от старого столбца вертикальной линией. |
|
Элемент помещается в новую строку (для строк меню) или в новый столбец (для раскрывающихся меню, подменю и контекстных меню) без разделения столбцов. |
|
Элемент рисуется владельцем. |
|
Пункт меню — это подменю. |
|
Существует горизонтальная разделительная линия (только для раскрывающихся меню, подменю и контекстных меню). |
Комментарии
Элемент можно проверить на наличие значения флага MF_ENABLED, MF_STRING, MF_UNCHECKED или MF_UNHILITE. Однако, так как эти значения приравниваются к нулю, для их проверки необходимо использовать выражение.
Flag | Выражение, проверяемое на наличие флага |
---|---|
MF_ENABLED | ! (Flag&(MF_DISABLED | MF_GRAYED)) |
MF_STRING | ! (Flag&(MF_BITMAP | MF_OWNERDRAW)) |
MF_UNCHECKED | ! (Flag&MF_CHECKED) |
MF_UNHILITE | ! (Flag&HILITE) |
Примеры
Пример см. в разделе Имитация флажков в меню.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | 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-2 (представлено в Windows 10 версии 10.0.10240) |
См. также раздел
Основные понятия
Справочные материалы