Função GetMenuState (winuser.h)

Recupera os sinalizadores de menu associados ao item de menu especificado. Se o item de menu abrir um submenu, essa função também retornará o número de itens no submenu.

Nota A função GetMenuState foi substituída pelo GetMenuItemInfo. No entanto, você ainda poderá usar GetMenuState se não precisar de nenhum dos recursos estendidos de GetMenuItemInfo.
 

Sintaxe

UINT GetMenuState(
  [in] HMENU hMenu,
  [in] UINT  uId,
  [in] UINT  uFlags
);

Parâmetros

[in] hMenu

Tipo: HMENU

Um identificador para o menu que contém o item de menu cujos sinalizadores devem ser recuperados.

[in] uId

Tipo: UINT

O item de menu para o qual os sinalizadores de menu devem ser recuperados, conforme determinado pelo parâmetro uFlags .

[in] uFlags

Tipo: UINT

Indica como o parâmetro uId é interpretado. Esse parâmetro pode usar um dos valores a seguir.

Valor Significado
MF_BYCOMMAND
0x00000000L
Indica que o parâmetro uId fornece o identificador do item de menu. O sinalizador MF_BYCOMMAND será o padrão se nem o sinalizador MF_BYCOMMAND nem MF_BYPOSITION for especificado.
MF_BYPOSITION
0x00000400L
Indica que o parâmetro uId fornece a posição relativa baseada em zero do item de menu.

Retornar valor

Tipo: UINT

Se o item especificado não existir, o valor retornado será -1.

Se o item de menu abrir um submenu, o byte de baixa ordem do valor retornado conterá os sinalizadores de menu associados ao item e o byte de ordem alta conterá o número de itens no submenu aberto pelo item.

Caso contrário, o valor retornado será uma máscara (OR bit a bit) dos sinalizadores de menu. A seguir estão os sinalizadores de menu associados ao item de menu.

Valor/código retornado Descrição
MF_CHECKED
0x00000008L
Uma marca de marcar é colocada ao lado do item (somente para menus suspensos, submenus e menus de atalho).
MF_DISABLED
0x00000002L
O item está desabilitado.
MF_GRAYED
0x00000001L
O item está desabilitado e esmaecido.
MF_HILITE
0x00000080L
O item está realçado.
MF_MENUBARBREAK
0x00000020L
Isso é o mesmo que o sinalizador MF_MENUBREAK , exceto para menus suspensos, submenus e menus de atalho, em que a nova coluna é separada da coluna antiga por uma linha vertical.
MF_MENUBREAK
0x00000040L
O item é colocado em uma nova linha (para barras de menus) ou em uma nova coluna (para menus suspensos, submenus e menus de atalho) sem separar colunas.
MF_OWNERDRAW
0x00000100L
O item é desenhado pelo proprietário.
MF_POPUP
0x00000010L
O item de menu é um submenu.
MF_SEPARATOR
0x00000800L
Há uma linha divisória horizontal (somente para menus suspensos, submenus e menus de atalho).

Comentários

É possível testar um item para um valor de sinalizador de MF_ENABLED, MF_STRING, MF_UNCHECKED ou MF_UNHILITE. No entanto, como esses valores equivalem a zero, você deve usar uma expressão para testá-los.

Sinalizador Expressão a ser testada para o sinalizador
MF_ENABLED ! (Flag&(MF_DISABLED | MF_GRAYED))
MF_STRING ! (Flag&(MF_BITMAP | MF_OWNERDRAW))
MF_UNCHECKED ! (Flag&MF_CHECKED)
MF_UNHILITE ! (Flag&HILITE)
 

Exemplos

Para obter um exemplo, consulte Simulando caixas de seleção em um menu.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho winuser.h (inclua Windows.h)
Biblioteca User32.lib
DLL User32.dll
Conjunto de APIs ext-ms-win-ntuser-menu-l1-1-2 (introduzido no Windows 10, versão 10.0.10240)

Confira também

Conceitual

GetMenu

GetMenuItemCount

GetMenuItemID

Getmenuiteminfo

Menus

Referência