Função TrackPopupMenuEx (winuser.h)
Exibe um menu de atalho no local especificado e rastreia a seleção de itens no menu de atalho. O menu de atalho pode aparecer em qualquer lugar na tela.
Sintaxe
BOOL TrackPopupMenuEx(
[in] HMENU hMenu,
[in] UINT uFlags,
[in] int x,
[in] int y,
[in] HWND hwnd,
[in, optional] LPTPMPARAMS lptpm
);
Parâmetros
[in] hMenu
Tipo: HMENU
Um identificador para o menu de atalho a ser exibido. Esse identificador pode ser obtido chamando a função CreatePopupMenu para criar um novo menu de atalho ou chamando a função GetSubMenu para recuperar um identificador para um submenu associado a um item de menu existente.
[in] uFlags
Tipo: UINT
Especifica as opções de função.
Use um dos sinalizadores a seguir para especificar como a função posiciona o menu de atalho horizontalmente.
Use um dos sinalizadores a seguir para especificar como a função posiciona o menu de atalho verticalmente.
Use os sinalizadores a seguir para controlar a descoberta da seleção do usuário sem precisar configurar uma janela pai para o menu.
Use um dos sinalizadores a seguir para especificar qual botão do mouse o menu de atalho rastreia.
Use qualquer combinação razoável dos sinalizadores a seguir para modificar a animação de um menu. Por exemplo, selecionando um sinalizador horizontal e vertical, você pode obter animação diagonal.
Para que qualquer animação ocorra, a função SystemParametersInfo deve definir SPI_SETMENUANIMATION. Além disso, todos os sinalizadores TPM_*ANIMATION , exceto TPM_NOANIMATION, serão ignorados se a animação de fade do menu estiver ativada. Para obter mais informações, consulte o sinalizador SPI_GETMENUFADE em SystemParametersInfo.
Use o sinalizador TPM_RECURSE para exibir um menu quando outro menu já estiver exibido. Isso se destina a dar suporte a menus de contexto em um menu.
Use um dos sinalizadores a seguir para especificar se deseja acomodar o alinhamento horizontal ou vertical.
O retângulo excluído é uma parte da tela que o menu não deve sobrepor; ele é especificado pelo parâmetro lptpm .
Para layout de texto da direita para a esquerda, use TPM_LAYOUTRTL. Por padrão, o layout de texto é da esquerda para a direita.
[in] x
Tipo: int
O local horizontal do menu de atalho, em coordenadas de tela.
[in] y
Tipo: int
O local vertical do menu de atalho, nas coordenadas da tela.
[in] hwnd
Digite: HWND
Um identificador para a janela que possui o menu de atalho. Essa janela recebe todas as mensagens do menu. A janela não recebe uma mensagem WM_COMMAND do menu até que a função retorne. Se você especificar TPM_NONOTIFY no parâmetro fuFlags , a função não enviará mensagens para a janela identificada por hwnd. No entanto, você ainda deve passar um identificador de janela no hwnd. Pode ser qualquer identificador de janela do aplicativo.
[in, optional] lptpm
Tipo: LPTPMPARAMS
Um ponteiro para uma estrutura TPMPARAMS que especifica uma área da tela que o menu não deve sobrepor. Este parâmetro pode ser NULL.
Retornar valor
Tipo: BOOL
Se você especificar TPM_RETURNCMD no parâmetro fuFlags , o valor retornado será o identificador de item de menu do item selecionado pelo usuário. Se o usuário cancelar o menu sem fazer uma seleção ou se ocorrer um erro, o valor retornado será zero.
Se você não especificar TPM_RETURNCMD no parâmetro fuFlags , o valor retornado será diferente de zero se a função for bem-sucedida e zero se falhar. Para obter informações de erro estendidas, chame GetLastError.
Comentários
Chame GetSystemMetrics com SM_MENUDROPALIGNMENT para determinar o sinalizador de alinhamento horizontal correto (TPM_LEFTALIGN ou TPM_RIGHTALIGN) e/ou o sinalizador de direção de animação horizontal (TPM_HORPOSANIMATION ou TPM_HORNEGANIMATION) para passar para TrackPopupMenu ou TrackPopupMenuEx. Isso é essencial para criar uma experiência de usuário ideal, especialmente ao desenvolver aplicativos do Microsoft Tablet PC.
Para exibir um menu de contexto para um ícone de notificação, a janela atual deve ser a janela em primeiro plano antes que o aplicativo chame TrackPopupMenu ou TrackPopupMenuEx. Caso contrário, o menu não desaparecerá quando o usuário clicar fora do menu ou a janela que criou o menu (se estiver visível). Se a janela atual for uma janela filho, você deverá definir a janela pai (de nível superior) como a janela de primeiro plano.
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-1 (introduzido em Windows 8.1) |
Confira também
Conceitual
Referência