Функция GetMenuState извлекает флажки меню, связанные с заданным пунктом меню. Если пункт меню открывает подменю, эта функция к тому же возвращает число пунктов в подменю.
Синтаксис
UINT GetMenuState( HMENU hMenu, UINT uId, UINT uFlags ); |
Параметры
hMenu
[in] Дескриптор меню, содержащее пункт, флажки которого должны извлечься.uId
[in] Устанавливает пункт меню, из которого флажки меню должны извлечься, как обусловлено параметром uFlags.uFlags
[in] Устанавливает, как интерпретируется параметр uId. Этот параметр может быть одним из ниже перечисленных значений.
Значение |
Предназначение |
MF_BYCOMMAND |
Обозначает, что параметр uId дает идентификатор пункта меню. Флажок MF_BYCOMMAND – это значение по умолчанию, если ни флажок MF_BYCOMMAND, ни флажок MF_BYPOSITION не установлены. |
MF_BYPOSITION |
Обозначает, что параметр uId дает отсчитываемую от нуля относительную позицию пункта меню. |
Возвращаемое значение
Если заданный пункт не существует, возвращаемое значение равно - (минус) 1.
Если пункт меню открывает подменю, младший байт возвращаемого значения содержит флажки меню, связанные с пунктом, а старший байт содержит число пунктов в подменю, открытым пунктом.
В противном случае, возвращаемое значение - маска (побитовое OR (ИЛИ)) флажков меню. Ниже следуют флажки меню связанные с пунктом меню.
Значение Предназначение MF_CHECKED Галочка помещена рядом с пунктом (только для "выпадающих" меню, подменю и контекстных меню). MF_DISABLED Пункт отключен. MF_GRAYED Пункт отключен и недоступен. MF_HILITE Пункт выделяется. MF_MENUBARBREAK Это то же самое, что и флажок MF_MENUBREAK, исключая "выпадающие" меню, подменю и контекстные меню, где новый столбец отделяется от старого вертикальной линией. MF_MENUBREAK Пункт помещается на новой строке (для строк меню) или в новом столбце (для "выпадающих" меню, подменю, и контекстных меню), не отделяя столбцы. MF_OWNERDRAW Пункт нарисован пользователем (собственный). MF_POPUP Пункт меню - подменю. MF_SEPARATOR Имеется горизонтальная разделительная линия (для "выпадающих" меню, подменю и контекстных меню).
Замечания
Обратите внимание! на то, что функция GetMenuState была заменена GetMenuItemInfo. Однако, Вы можете все еще использовать GetMenuState, если нет необходимости в каких-либо дополнительных свойствах GetMenuItemInfo. |
Кроме того, функция может проверить для пункта значение флажка MF_ENABLED, MF_STRING, MF_UNCHECKED или MF_UNHILITE. Однако, так как эти значения равны нулю, Вы должны использовать выражение, чтобы проверить их.
Флажок Выражение для проверки флажка MF_ENABLED ! (Flag&(MF_DISABLED | MF_GRAYED)) MF_STRING ! (Flag&(MF_BITMAP | MF_OWNERDRAW)) MF_UNCHECKED ! (Flag&MF_CHECKED) MF_UNHILITE ! (Flag&HILITE)
Пример
Пример смотри в статье Моделирование окошек меток в меню.
Смотри также
Краткий обзор Меню, GetMenu, GetMenuItemCount, GetMenuItemID, GetMenuItemInfo
Размещение и совместимость GetMenuState |
|
Windows. NET Server |
Да |
Windows XP |
Да |
Windows 2000 |
Да |
Windows NT |
Да версии 3.1 и выше |
Windows Me |
Да |
Windows 98 |
Да |
Windows 95 |
Да |
Используемая библиотека |
User32.lib |
Заголовочный файл |
|
- объявлено в |
Winuser.h |
- включено в |
Windows.h |
Unicode |
Нет |
Замечания по платформе |
Не имеется |