Функция GetMenuState


Функция 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

Нет

Замечания по платформе

Не имеется

 

Назад в оглавление
На главную страницу
На оглавление справки

Hosted by uCoz