Partager via


CContextMenuManager, classe

L’objet CContextMenuManager gère les menus contextuels, également appelés menus contextuels.

Syntaxe

class CContextMenuManager : public CObject

Membres

Constructeurs publics

Nom Description
CContextMenuManager ::CContextMenuManager Construit un objet CContextMenuManager.
CContextMenuManager::~CContextMenuManager Destructeur.

Méthodes publiques

Nom Description
CContextMenuManager ::AddMenu Ajoute un nouveau menu contextuel.
CContextMenuManager ::GetMenuById Retourne un handle au menu associé à l’ID de ressource fourni.
CContextMenuManager ::GetMenuByName Retourne un handle au menu qui correspond au nom de menu fourni.
CContextMenuManager ::GetMenuNames Retourne une liste de noms de menus.
CContextMenuManager ::LoadState Charge les menus contextuels stockés dans le Registre Windows.
CContextMenuManager ::ResetState Efface les menus contextuels du gestionnaire de menus contextuels.
CContextMenuManager ::SaveState Enregistre les menus contextuels dans le Registre Windows.
CContextMenuManager ::SetDontCloseActiveMenu Contrôle si le CContextMenuManager menu contextuel actif se ferme lorsqu’il affiche un nouveau menu contextuel.
CContextMenuManager ::ShowPopupMenu Affiche le menu contextuel spécifié.
CContextMenuManager ::TrackPopupMenu Affiche le menu contextuel spécifié. Retourne l’index de la commande de menu sélectionnée.

Notes

CContextMenuManager gère les menus contextuels et s’assure qu’ils ont une apparence cohérente.

Vous ne devez pas créer un CContextMenuManager objet manuellement. L’infrastructure de votre application crée l’objet CContextMenuManager . Toutefois, vous devez appeler CWinAppEx ::InitContextMenuManager lorsque votre application est initialisée. Après avoir initialisé le gestionnaire de contexte, utilisez la méthode CWinAppEx ::GetContextMenuManager pour obtenir un pointeur vers le gestionnaire de contexte pour votre application.

Vous pouvez créer des menus contextuels au moment de l’exécution en appelant AddMenu. Si vous souhaitez afficher le menu sans recevoir d’abord l’entrée utilisateur, appelez ShowPopupMenu. TrackPopupMenu est utilisé lorsque vous souhaitez créer un menu et attendre l’entrée utilisateur. TrackPopupMenu retourne l’index de la commande sélectionnée ou 0 si l’utilisateur a quitté sans sélectionner quoi que ce soit.

Vous CContextMenuManager pouvez également enregistrer et charger son état dans le Registre Windows.

Exemple

L’exemple suivant montre comment ajouter un menu à un CContextMenuManager objet et comment ne pas fermer le menu contextuel actif lorsque l’objet CContextMenuManager affiche un nouveau menu contextuel. Cet extrait de code fait partie de l’exemple Pages personnalisées.

// The GetContextMenuManager method is inherited from the CWinAppEx class.
GetContextMenuManager()->AddMenu(_T("My menu"), IDR_CONTEXT_MENU);
GetContextMenuManager()->SetDontCloseActiveMenu(true);

Hiérarchie d'héritage

CObject

CContextMenuManager

Spécifications

En-tête : afxcontextmenumanager.h

CContextMenuManager ::AddMenu

Ajoute un nouveau menu contextuel au CContextMenuManager.

BOOL AddMenu(
    UINT uiMenuNameResId,
    UINT uiMenuResId);

BOOL AddMenu(
    LPCTSTR lpszName,
    UINT uiMenuResId);

Paramètres

uiMenuNameResId
[in] ID de ressource pour une chaîne qui contient le nom du nouveau menu.

uiMenuResId
[in] ID de ressource de menu.

lpszName
[in] Chaîne qui contient le nom du nouveau menu.

Valeur de retour

Différent de zéro si la méthode a réussi ; 0 si la méthode échoue.

Notes

Cette méthode échoue si uiMenuResId n’est pas valide ou si un autre menu portant le même nom se trouve déjà dans le CContextMenuManager.

CContextMenuManager ::CContextMenuManager

Construit un objet CContextMenuManager .

CContextMenuManager();

Notes

Dans la plupart des cas, vous ne devez pas créer manuellement.CContextMenuManager L’infrastructure de votre application crée l’objet CContextMenuManager . Vous devez appeler CWinAppEx ::InitContextMenuManager pendant l’initialisation de votre application. Pour obtenir un pointeur vers le gestionnaire de contexte, appelez CWinAppEx ::GetContextMenuManager.

CContextMenuManager ::GetMenuById

Retourne un handle au menu associé à un ID de ressource donné.

HMENU GetMenuById(UINT nMenuResId) const;

Paramètres

nMenuResId
[in] ID de ressource du menu.

Valeur de retour

Handle du menu associé ou NULL si le menu est introuvable.

CContextMenuManager ::GetMenuByName

Retourne un handle dans un menu spécifique.

HMENU GetMenuByName(
    LPCTSTR lpszName,
    UINT* puiOrigResID = NULL) const;

Paramètres

lpszName
[in] Chaîne qui contient le nom du menu à récupérer.

puiOrigResID
[out] Pointeur vers un UINT. Ce paramètre contient l’ID de ressource du menu spécifié, s’il est trouvé.

Valeur de retour

Handle du menu qui correspond au nom spécifié par lpszName. NULL s’il n’existe aucun menu appelé lpszName.

Notes

Si cette méthode trouve un menu qui correspond à lpszName, GetMenuByName stocke l’ID de ressource de menu dans le paramètre puiOrigResID.

CContextMenuManager ::GetMenuNames

Retourne la liste des noms de menu ajoutés au CContextMenuManager.

void GetMenuNames(CStringList& listOfNames) const;

Paramètres

listOfNames
[out] Référence à un paramètre CStringList . Cette méthode écrit la liste des noms de menus dans ce paramètre.

CContextMenuManager ::LoadState

Charge des informations associées à la classe CContextMenuManager à partir du Registre Windows.

virtual BOOL LoadState(LPCTSTR lpszProfileName = NULL);

Paramètres

lpszProfileName
[in] Chaîne qui contient le chemin d’accès relatif d’une clé de Registre.

Valeur de retour

Différent de zéro si la méthode réussit ; sinon 0.

Notes

Le paramètre lpszProfileName n’est pas le chemin absolu d’une entrée de Registre. Il s’agit d’un chemin relatif ajouté à la fin de la clé de Registre par défaut pour votre application. Pour obtenir ou définir la clé de Registre par défaut, utilisez les méthodes CWinAppEx ::GetRegistryBase et CWinAppEx ::SetRegistryBase respectivement.

Utilisez la méthode CContextMenuManager ::SaveState pour enregistrer les menus contextuels dans le Registre.

CContextMenuManager ::ResetState

Efface tous les éléments des menus contextuels associés à la classe CContextMenuManager.

virtual BOOL ResetState();

Valeur de retour

TRUE si la méthode réussit ; FALSE si une défaillance se produit.

Notes

Cette méthode efface les menus contextuels et les supprime du CContextMenuManager.

CContextMenuManager ::SaveState

Enregistre les informations associées à la classe CContextMenuManager dans le Registre Windows.

virtual BOOL SaveState(LPCTSTR lpszProfileName = NULL);

Paramètres

lpszProfileName
[in] Chaîne qui contient le chemin d’accès relatif d’une clé de Registre.

Valeur de retour

Différent de zéro si la méthode réussit ; sinon 0.

Notes

Le paramètre lpszProfileName n’est pas le chemin absolu d’une entrée de Registre. Il s’agit d’un chemin relatif ajouté à la fin de la clé de Registre par défaut pour votre application. Pour obtenir ou définir la clé de Registre par défaut, utilisez les méthodes CWinAppEx ::GetRegistryBase et CWinAppEx ::SetRegistryBase respectivement.

Utilisez la méthode CContextMenuManager ::LoadState pour charger les menus contextuels à partir du Registre.

CContextMenuManager ::SetDontCloseActiveMenu

Contrôle si CContextMenuManager ferme le menu contextuel actif lorsqu’il affiche un nouveau menu contextuel.

void SetDontCloseActiveMenu (BOOL bSet = TRUE);

Paramètres

bSet
[in] Paramètre booléen qui contrôle s’il faut fermer le menu contextuel actif. La valeur TRUE indique que le menu contextuel actif n’est pas fermé. FALSE indique que le menu contextuel actif est fermé.

Notes

Par défaut, le CContextMenuManager menu contextuel actif est fermé.

CContextMenuManager ::ShowPopupMenu

Affiche le menu contextuel spécifié.

virtual BOOL ShowPopupMenu(
    UINT uiMenuResId,
    int x,
    int y,
    CWnd* pWndOwner,
    BOOL bOwnMessage = FALSE,
    BOOL bRightAlign = FALSE);

virtual CMFCPopupMenu* ShowPopupMenu(
    HMENU hmenuPopup,
    int x,
    int y,
    CWnd* pWndOwner,
    BOOL bOwnMessage = FALSE,
    BOOL bAutoDestroy = TRUE,
    BOOL bRightAlign = FALSE);

Paramètres

uiMenuResId
[in] ID de ressource du menu affiché par cette méthode.

x
[in] Décalage horizontal du menu contextuel dans les coordonnées du client.

y
[in] Décalage vertical du menu contextuel dans les coordonnées du client

pWndOwner
[in] Pointeur vers la fenêtre parente du menu contextuel.

bOwnMessage
[in] Paramètre booléen qui indique la façon dont les messages sont routés. Si bOwnMessage a la valeur FALSE, le routage MFC standard est utilisé. Sinon, pWndOwner reçoit les messages.

hmenuPopup
[in] Handle du menu affiché par cette méthode.

bAutoDestroy
[in] Paramètre booléen qui indique si le menu sera automatiquement détruit.

bRightAlign
[in] Paramètre booléen qui indique comment les éléments de menu sont alignés. Si bRightAlign a la valeur TRUE, le menu est aligné à droite pour l’ordre de lecture de droite à gauche.

Valeur de retour

La première surcharge de méthode retourne une valeur différente de zéro si la méthode affiche correctement le menu ; sinon 0. La deuxième surcharge de méthode retourne un pointeur vers CMFCPopupMenu si le menu contextuel s’affiche correctement ; sinon NULL.

Notes

Cette méthode ressemble à la méthode CContextMenuManager ::TrackPopupMenu dans laquelle les deux méthodes affichent un menu contextuel. Toutefois, TrackPopupMenu retourne l’index de la commande de menu sélectionnée.

Si le paramètre bAutoDestroy a la valeur FALSE, vous devez appeler manuellement la méthode héritée DestroyMenu pour libérer des ressources de mémoire. L’implémentation par défaut de ShowPopupMenu n’utilise pas le paramètre bAutoDestroy. Il est fourni pour une utilisation ultérieure ou pour les classes personnalisées dérivées de la CContextMenuManager classe .

CContextMenuManager ::TrackPopupMenu

Affiche le menu contextuel spécifié et retourne l’index de la commande de menu contextuel sélectionné.

virtual UINT TrackPopupMenu(
    HMENU hmenuPopup,
    int x,
    int y,
    CWnd* pWndOwner,
    BOOL bRightAlign = FALSE);

Paramètres

hmenuPopup
[in] Handle du menu contextuel affiché par cette méthode.

x
[in] Décalage horizontal du menu contextuel dans les coordonnées du client.

y
[in] Décalage vertical du menu contextuel dans les coordonnées du client.

pWndOwner
[in] Pointeur vers la fenêtre parente du menu contextuel.

bRightAlign
[in] Paramètre booléen qui indique comment les éléments de menu sont alignés. Si bRightAlign a la valeur TRUE, le menu est aligné à droite pour l’ordre de lecture de droite à gauche. Si bRightAlign a la valeur FALSE, le menu est aligné à gauche pour l’ordre de lecture de gauche à droite.

Valeur de retour

ID de commande de menu de la commande choisie par l’utilisateur ; 0 si l’utilisateur ferme le menu contextuel sans sélectionner de commande de menu.

Notes

Cette méthode fonctionne comme un appel modal pour afficher un menu contextuel. L’application ne continuera pas à la ligne suivante dans le code tant que l’utilisateur ne ferme pas le menu contextuel ou sélectionne une commande. Une autre méthode que vous pouvez utiliser pour afficher un menu contextuel est CContextMenuManager ::ShowPopupMenu. Cette méthode n’est pas un appel modal et ne retourne pas l’ID de la commande sélectionnée.

Voir aussi

Graphique hiérarchique
Classes
CWinAppEx, classe