TrackPopupMenuEx, fonction (winuser.h)
Affiche un menu contextuel à l’emplacement spécifié et effectue le suivi de la sélection des éléments dans le menu contextuel. Le menu contextuel peut apparaître n’importe où sur l’écran.
Syntaxe
BOOL TrackPopupMenuEx(
[in] HMENU hMenu,
[in] UINT uFlags,
[in] int x,
[in] int y,
[in] HWND hwnd,
[in, optional] LPTPMPARAMS lptpm
);
Paramètres
[in] hMenu
Type : HMENU
Handle vers le menu contextuel à afficher. Ce handle peut être obtenu en appelant la fonction CreatePopupMenu pour créer un menu contextuel ou en appelant la fonction GetSubMenu pour récupérer un handle dans un sous-menu associé à un élément de menu existant.
[in] uFlags
Type : UINT
Spécifie les options de fonction.
Utilisez l’un des indicateurs suivants pour spécifier la façon dont la fonction positionne horizontalement le menu contextuel.
Utilisez l’un des indicateurs suivants pour spécifier la façon dont la fonction positionne verticalement le menu contextuel.
Utilisez les indicateurs suivants pour contrôler la découverte de la sélection de l’utilisateur sans avoir à configurer une fenêtre parente pour le menu.
Utilisez l’un des indicateurs suivants pour spécifier le bouton de souris suivi par le menu contextuel.
Utilisez n’importe quelle combinaison raisonnable des indicateurs suivants pour modifier l’animation d’un menu. Par exemple, en sélectionnant un indicateur horizontal et un indicateur vertical, vous pouvez obtenir une animation diagonale.
Pour qu’une animation se produise, la fonction SystemParametersInfo doit définir SPI_SETMENUANIMATION. En outre, tous les indicateurs TPM_*ANIMATION , à l’exception des TPM_NOANIMATION, sont ignorés si l’animation de fondu de menu est activée. Pour plus d’informations, consultez l’indicateur SPI_GETMENUFADE dans SystemParametersInfo.
Utilisez l’indicateur TPM_RECURSE pour afficher un menu lorsqu’un autre menu est déjà affiché. Ceci est destiné à prendre en charge les menus contextuels dans un menu.
Utilisez l’un des indicateurs suivants pour spécifier s’il faut prendre en charge l’alignement horizontal ou vertical.
Le rectangle exclu est une partie de l’écran que le menu ne doit pas chevaucher ; il est spécifié par le paramètre lptpm .
Pour la disposition de texte de droite à gauche, utilisez TPM_LAYOUTRTL. Par défaut, la disposition du texte est de gauche à droite.
[in] x
Type : int
Emplacement horizontal du menu contextuel, en coordonnées d’écran.
[in] y
Type : int
Emplacement vertical du menu contextuel, en coordonnées d’écran.
[in] hwnd
Type : HWND
Handle de la fenêtre qui possède le menu contextuel. Cette fenêtre reçoit tous les messages du menu. La fenêtre ne reçoit pas de message WM_COMMAND du menu tant que la fonction n’est pas retournée. Si vous spécifiez TPM_NONOTIFY dans le paramètre fuFlags , la fonction n’envoie pas de messages à la fenêtre identifiée par hwnd. Toutefois, vous devez toujours passer une poignée de fenêtre dans hwnd. Il peut s’agir de n’importe quel handle de fenêtre de votre application.
[in, optional] lptpm
Type : LPTPMPARAMS
Pointeur vers une structure TPMPARAMS qui spécifie une zone de l’écran que le menu ne doit pas chevaucher. Ce paramètre peut être NULL.
Valeur retournée
Type : BOOL
Si vous spécifiez TPM_RETURNCMD dans le paramètre fuFlags , la valeur renvoyée est l’identificateur d’élément de menu de l’élément sélectionné par l’utilisateur. Si l’utilisateur annule le menu sans effectuer de sélection, ou si une erreur se produit, la valeur de retour est zéro.
Si vous ne spécifiez pas TPM_RETURNCMD dans le paramètre fuFlags , la valeur de retour est différente de zéro si la fonction réussit et de zéro si elle échoue. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.
Remarques
Appelez GetSystemMetrics avec SM_MENUDROPALIGNMENT pour déterminer l’indicateur d’alignement horizontal (TPM_LEFTALIGN ou TPM_RIGHTALIGN) et/ou l’indicateur de direction d’animation horizontale (TPM_HORPOSANIMATION ou TPM_HORNEGANIMATION) à passer à TrackPopupMenu ou TrackPopupMenuEx. Cela est essentiel pour créer une expérience utilisateur optimale, en particulier lors du développement d’applications Microsoft Tablet PC.
Pour afficher un menu contextuel d’une icône de notification, la fenêtre active doit être la fenêtre de premier plan avant que l’application appelle TrackPopupMenu ou TrackPopupMenuEx. Sinon, le menu ne disparaît pas lorsque l’utilisateur clique en dehors du menu ou de la fenêtre qui a créé le menu (s’il est visible). Si la fenêtre active est une fenêtre enfant, vous devez définir la fenêtre parente (de niveau supérieur) comme fenêtre de premier plan.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 2000 Professionnel [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows 2000 Server [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | winuser.h (inclure Windows.h) |
Bibliothèque | User32.lib |
DLL | User32.dll |
Ensemble d’API | ext-ms-win-ntuser-menu-l1-1-1 (introduit dans Windows 8.1) |
Voir aussi
Conceptuel
Référence