Partager via


CSnapInItemImpl, classe

Cette classe fournit des méthodes pour implémenter un objet de nœud enfichable.

Important

Cette classe et ses membres ne peuvent pas être utilisés dans les applications qui s’exécutent dans Windows Runtime.

Syntaxe

template <class T, BOOL bIsExtension = FALSE>
class ATL_NO_VTABLE CSnapInItemImpl : public CSnapInItem

Paramètres

T
Votre classe, dérivée de CSnapInItemImpl.

bIsExtension
TRUE si l’objet est une extension de composant logiciel enfichable ; sinon FALSE.

Membres

Constructeurs publics

Nom Description
CSnapInItemImpl ::CSnapInItemImpl Constructeur.

Méthodes publiques

Nom Description
CSnapInItemImpl ::AddMenuItems Ajoute des éléments de menu à un menu contextuel.
CSnapInItemImpl ::Command Appelé par la console lorsqu’un élément de menu personnalisé est sélectionné.
CSnapInItemImpl ::CreatePropertyPages Ajoute des pages à la feuille de propriétés du composant logiciel enfichable.
CSnapInItemImpl ::FillData Copie des informations sur l’objet enfichable dans un flux spécifié.
CSnapInItemImpl ::GetResultPaneInfo Récupère la RESULTDATAITEM structure du composant logiciel enfichable.
CSnapInItemImpl ::GetResultViewType Détermine le type d’affichage utilisé par le volet de résultats.
CSnapInItemImpl ::GetScopePaneInfo Récupère la SCOPEDATAITEM structure du composant logiciel enfichable.
CSnapInItemImpl ::Notify Appelé par la console pour notifier le composant logiciel enfichable des actions effectuées par l’utilisateur.
CSnapInItemImpl ::QueryPagesFor Appelé pour voir si le nœud enfichable prend en charge les pages de propriétés.
CSnapInItemImpl ::SetMenuInsertionFlags Modifie les indicateurs d’insertion de menu pour un objet enfichable.
CSnapInItemImpl ::SetToolbarButtonInfo Définit les informations du bouton de barre d’outils spécifié.
CSnapInItemImpl ::UpdateMenuState Mises à jour l’état d’un élément de menu contextuel.
CSnapInItemImpl ::UpdateToolbarButton Mises à jour l’état du bouton de barre d’outils spécifié.

Membres de données publics

Nom Description
CSnapInItemImpl ::m_bstrDisplayName Nom de l’objet de composant logiciel enfichable.
CSnapInItemImpl ::m_resultDataItem Structure Windows RESULTDATAITEM utilisée par l’objet CSnapInItemImpl .
CSnapInItemImpl ::m_scopeDataItem Structure Windows SCOPEDATAITEM utilisée par l’objet CSnapInItemImpl .

Notes

CSnapInItemImpl fournit une implémentation de base pour un objet de nœud enfichable, comme l’ajout d’éléments de menu et de barres d’outils, et le transfert de commandes pour le nœud enfichable vers la fonction de gestionnaire appropriée. Ces fonctionnalités sont implémentées à l’aide de plusieurs interfaces et types de mappage différents. L’implémentation par défaut gère les notifications envoyées à l’objet de nœud en déterminant l’instance correcte de la classe dérivée, puis en transférant le message à l’instance correcte.

Hiérarchie d'héritage

CSnapInItem

CSnapInItemImpl

Spécifications

En-tête : atlsnap.h

CSnapInItemImpl ::AddMenuItems

Cette méthode implémente la fonction Win32 IExtendContextMenu ::AddMenuItems.

AddMenuItems(
    LPCONTEXTMENUCALLBACK piCallback,
    long* pInsertionAllowed,
    DATA_OBJECT_TYPES type);

Paramètres

piCallback
[in] Pointeur vers le IContextMenuCallback pointeur qui peut ajouter des éléments au menu contextuel.

pInsertionAllowed
[in, out] Identifie les points d’insertion d’élément de menu définis par Microsoft Management Console (MMC) qui peuvent être utilisés. Il peut s’agir d’une combinaison des indicateurs suivants :

  • CCM_INSERTIONALLOWED_TOP Éléments peuvent être insérés en haut d’un menu contextuel.

  • CCM_INSERTIONALLOWED_NEW Éléments peuvent être insérés dans le sous-menu Créer un sous-menu.

  • CCM_INSERTIONALLOWED_TASK Éléments peuvent être insérés dans le sous-menu Tâche.

  • CCM_INSERTIONALLOWED_VIEW Éléments peuvent être insérés dans le menu d’affichage de la barre d’outils ou dans le sous-menu Affichage du menu contextuel du volet de résultats.

type
[in] Spécifie le type d’objet. Il peut avoir l’une des valeurs suivantes :

  • CCT_SCOPE objet Data pour le contexte du volet d’étendue.

  • CCT_RESULT objet Data pour le contexte du volet de résultats.

  • CCT_SNAPIN_MANAGER objet De données pour le contexte du gestionnaire de composants logiciels enfichables.

  • CCT_UNINITIALIZED’objet Data a un type non valide.

CSnapInItemImpl ::Command

Cette méthode implémente la fonction Win32 IExtendContextMenu ::Command.

Command(long lCommandID, DATA_OBJECT_TYPES type);

Paramètres

lCommandID
[in] Spécifie l’identificateur de commande de l’élément de menu.

type
[in] Spécifie le type d’objet. Il peut avoir l’une des valeurs suivantes :

  • CCT_SCOPE objet Data pour le contexte du volet d’étendue.

  • CCT_RESULT objet Data pour le contexte du volet de résultats.

  • CCT_SNAPIN_MANAGER objet De données pour le contexte du gestionnaire de composants logiciels enfichables.

  • CCT_UNINITIALIZED’objet Data a un type non valide.

CSnapInItemImpl ::CreatePropertyPages

Cette méthode implémente la fonction Win32 IExtendPropertySheet ::CreatePropertyPages.

CreatePropertyPages(
    LPPROPERTYSHEETCALLBACK lpProvider,
    long handle,
    IUnknown* pUnk,
    DATA_OBJECT_TYPES type);

Paramètres

lpProvider
[in] Pointeur vers l’interface IPropertySheetCallback .

Poignée
[in] Spécifie le handle utilisé pour acheminer le message de notification MMCN_PROPERTY_CHANGE vers la classe de données appropriée.

Punk
[in] Pointeur vers l’interface IExtendPropertySheet sur l’objet qui contient des informations de contexte sur le nœud.

type
[in] Spécifie le type d’objet. Il peut avoir l’une des valeurs suivantes :

  • CCT_SCOPE objet Data pour le contexte du volet d’étendue.

  • CCT_RESULT objet Data pour le contexte du volet de résultats.

  • CCT_SNAPIN_MANAGER objet De données pour le contexte du gestionnaire de composants logiciels enfichables.

  • CCT_UNINITIALIZED’objet Data a un type non valide.

CSnapInItemImpl ::CSnapInItemImpl

Construit un objet CSnapInItemImpl.

CSnapInItemImpl();

CSnapInItemImpl ::FillData

Cette fonction est appelée pour récupérer des informations sur l’élément.

FillData(CLIPFORMAT cf, LPSTREAM pStream);

Paramètres

Cf
[in] Format (texte, texte enrichi ou texte enrichi avec des éléments OLE) du Presse-papiers.

pStream
[in] Pointeur vers le flux contenant les données d’objet.

Notes

Pour implémenter correctement cette fonction, copiez les informations correctes dans le flux (pStream), en fonction du format presse-papiers indiqué par cf.

CSnapInItemImpl ::GetResultViewType

Appelez cette fonction pour récupérer le type d’affichage pour le volet de résultats de l’objet de composant logiciel enfichable.

GetResultViewType(
    LPOLESTR* ppViewType,
    long* pViewOptions);

Paramètres

ppViewType
[out] Pointeur vers l’adresse du type d’affichage retourné.

pViewOptions
[out] Pointeur vers l’énumération MMC_VIEW_OPTIONS, qui fournit à la console des options spécifiées par le composant logiciel enfichable propriétaire. Cette valeur peut être l’une des suivantes :

  • MMC_VIEW_OPTIONS_NOLISTVIEWS = 0x00000001 indique à la console de s’abstenir de présenter des choix d’affichage de liste standard dans le menu Affichage . Permet au composant logiciel enfichable d’afficher ses propres vues personnalisées uniquement dans le volet d’affichage des résultats. Il s’agit du seul indicateur d’option défini pour l’instant.

  • MMC_VIEW_OPTIONS_NONE = 0 Autorise les options d’affichage par défaut.

CSnapInItemImpl ::GetScopePaneInfo

Appelez cette fonction pour récupérer la SCOPEDATAITEM structure du composant logiciel enfichable.

GetScopePaneInfo (SCOPEDATAITEM* pScopeDataItem);

Paramètres

pScopeDataItem
[out] Pointeur vers la SCOPEDATAITEM structure de l’objet CSnapInItemImpl .

CSnapInItemImpl ::GetResultPaneInfo

Appelez cette fonction pour récupérer la RESULTDATAITEM structure du composant logiciel enfichable.

GetResultPaneInfo (RESULTDATAITEM* pResultDataItem);

Paramètres

pResultDataItem
[out] Pointeur vers la RESULTDATAITEM structure de l’objet CSnapInItemImpl .

CSnapInItemImpl ::m_bstrDisplayName

Contient la chaîne affichée pour l’élément de nœud.

CComBSTR m_bstrDisplayName;

CSnapInItemImpl ::m_scopeDataItem

Structure SCOPEDATAITEM de l’objet de données enfichable.

SCOPEDATAITEM m_scopeDataItem;

CSnapInItemImpl ::m_resultDataItem

Structure RESULTDATAITEM de l’objet de données enfichable.

RESULTDATAITEM m_resultDataItem;

CSnapInItemImpl ::Notify

Appelé lorsque l’objet enfichable est traité par l’utilisateur.

STDMETHOD(Notify)(
    MMC_NOTIFY_TYPE event,
    long arg,
    long param,
    IComponentData* pComponentData,
    IComponent* pComponent,
    DATA_OBJECT_TYPES type) = 0;

Paramètres

event
[in] Identifie une action effectuée par un utilisateur. Les notifications suivantes sont possibles :

  • MMCN_ACTIVATE Envoyé lorsqu’une fenêtre est activée et désactivée.

  • MMCN_ADD_IMAGES Envoyé pour ajouter des images au volet de résultats.

  • MMCN_BTN_CLICK Envoyé lorsque l’utilisateur clique sur l’un des boutons de barre d’outils.

  • MMCN_CLICK Envoyé lorsqu’un utilisateur clique sur un bouton de souris sur un élément d’affichage de liste.

  • MMCN_DBLCLICK Envoyé lorsqu’un utilisateur double-clique sur un bouton de souris sur un élément d’affichage de liste.

  • MMCN_DELETE Envoyé pour informer le composant logiciel enfichable que l’objet doit être supprimé.

  • MMCN_EXPAND Envoyé lorsqu’un dossier doit être développé ou contracté.

  • MMCN_MINIMIZED Envoyé lorsqu’une fenêtre est réduite ou agrandie.

  • MMCN_PROPERTY_CHANGE Envoyé pour notifier un objet enfichable que la vue de l’objet composant logiciel enfichable est sur le point de changer.

  • MMCN_REMOVE_CHILDREN Envoyé lorsque le composant logiciel enfichable doit supprimer la sous-arborescence entière qu’elle a ajoutée sous le nœud spécifié.

  • MMCN_RENAME Envoyé la première fois pour interroger un renommage et la deuxième fois pour effectuer le renommage.

  • MMCN_SELECT Envoyé lorsqu’un élément dans le volet d’étendue ou d’affichage des résultats est sélectionné.

  • MMCN_SHOW Envoyé lorsqu’un élément d’étendue est sélectionné ou désélectionné pour la première fois.

  • MMCN_VIEW_CHANGE envoyé lorsque le composant logiciel enfichable peut mettre à jour toutes les vues lorsqu’une modification se produit.

arg
[in] Dépend du type de notification.

param
[in] Dépend du type de notification.

pComponentData
[out] Pointeur vers l’objet implémentant IComponentData. Ce paramètre a la valeur NULL si la notification n’est pas transférée à partir de IComponentData::Notify.

pComponent
[out] Pointeur vers l’objet qui implémente IComponent. Ce paramètre a la valeur NULL si la notification n’est pas transférée à partir de IComponent::Notify.

type
[in] Spécifie le type d’objet. Il peut avoir l’une des valeurs suivantes :

  • CCT_SCOPE objet Data pour le contexte du volet d’étendue.

  • CCT_RESULT objet Data pour le contexte du volet de résultats.

  • CCT_SNAPIN_MANAGER objet De données pour le contexte du gestionnaire de composants logiciels enfichables.

  • CCT_UNINITIALIZED’objet Data a un type non valide.

CSnapInItemImpl ::QueryPagesFor

Appelé pour voir si le nœud enfichable prend en charge les pages de propriétés.

QueryPagesFor(DATA_OBJECT_TYPES type);

CSnapInItemImpl ::SetMenuInsertionFlags

Appelez cette fonction pour modifier les indicateurs d’insertion de menu, spécifiés par pInsertionAllowed, pour l’objet de composant logiciel enfichable.

void SetMenuInsertionFlags(
    bool bBeforeInsertion,
    long* pInsertionAllowed);

Paramètres

bBeforeInsertion
[in] Différent de zéro si la fonction doit être appelée avant l’ajout d’éléments au menu contextuel ; sinon 0.

pInsertionAllowed
[in, out] Identifie les points d’insertion d’élément de menu définis par Microsoft Management Console (MMC) qui peuvent être utilisés. Il peut s’agir d’une combinaison des indicateurs suivants :

  • CCM_INSERTIONALLOWED_TOP Éléments peuvent être insérés en haut d’un menu contextuel.

  • CCM_INSERTIONALLOWED_NEW Éléments peuvent être insérés dans le sous-menu Créer un sous-menu.

  • CCM_INSERTIONALLOWED_TASK Éléments peuvent être insérés dans le sous-menu Tâche.

  • CCM_INSERTIONALLOWED_VIEW Éléments peuvent être insérés dans le menu d’affichage de la barre d’outils ou dans le sous-menu Affichage du menu contextuel du volet de résultats.

Notes

Si vous développez un composant logiciel enfichable principal, vous pouvez réinitialiser l’un des indicateurs d’insertion comme moyen de restreindre le type d’éléments de menu qu’une extension tierce peut ajouter. Par exemple, le composant logiciel enfichable principal peut effacer l’indicateur CCM_INSERTIONALLOWED_NEW pour empêcher les extensions d’ajouter leurs propres éléments de menu Créer un nouveau.

Vous ne devez pas tenter de définir des bits dans pInsertionAllowed qui ont été initialement effacés. Les futures versions de MMC peuvent utiliser des bits non définis actuellement. Vous ne devez donc pas modifier les bits qui ne sont actuellement pas définis.

CSnapInItemImpl ::SetToolbarButtonInfo

Appelez cette fonction pour modifier les styles de boutons de barre d’outils, de l’objet enfichable, avant la création de la barre d’outils.

void SetToolbarButtonInfo(
    UINT id,
    BYTE* fsState,
    BYTE* fsType);

Paramètres

id
[in] ID du bouton de barre d’outils à définir.

fsState
[in] Indicateurs d’état du bouton. Il peut s’agir d’un ou de plusieurs des éléments suivants :

  • ToSTATE_CHECKED Le bouton a le style ToSTYLE_CHECKED et est enfoncé.

  • ToSTATE_ENABLED Le bouton accepte l’entrée utilisateur. Un bouton qui n’a pas cet état n’accepte pas l’entrée utilisateur et est grisé.

  • ToSTATE_HIDDEN Le bouton n’est pas visible et ne peut pas recevoir d’entrée utilisateur.

  • ToSTATE_INDETERMINATE Le bouton est grisé.

  • ToSTATE_PRESSED Le bouton est enfoncé.

  • ToSTATE_WRAP Un saut de ligne suit le bouton. Le bouton doit également avoir la ToSTATE_ENABLED.

fsType
[in] Indicateurs d’état du bouton. Il peut s’agir d’un ou de plusieurs des éléments suivants :

  • ToSTYLE_BUTTON Crée un bouton Push standard.

  • ToSTYLE_CHECK Crée un bouton qui bascule entre les états appuyés et non appuyés chaque fois que l’utilisateur clique dessus. Le bouton a une couleur d’arrière-plan différente lorsqu’il est dans l’état enfoncé.

  • ToSTYLE_CHECKGROUP Crée un bouton case activée qui reste enfoncé jusqu’à ce qu’un autre bouton du groupe soit enfoncé.

  • ToSTYLE_GROUP Crée un bouton qui reste enfoncé jusqu’à ce qu’un autre bouton du groupe soit appuyé.

  • ToSTYLE_SEP Crée un séparateur, fournissant un petit écart entre les groupes de boutons. Un bouton qui a ce style ne reçoit pas d’entrée utilisateur.

CSnapInItemImpl ::UpdateMenuState

Appelez cette fonction pour modifier un élément de menu avant d’être inséré dans le menu contextuel de l’objet composant logiciel enfichable.

void UpdateMenuState(
    UINT id,
    LPTSTR pBuf,
    UINT* flags);

Paramètres

id
[in] ID de l’élément de menu à définir.

pBuf
[in] Pointeur vers la chaîne de l’élément de menu à mettre à jour.

flags
[in] Spécifie les nouveaux indicateurs d’état. Il peut s’agir d’une combinaison des indicateurs suivants :

  • MF_POPUP Spécifie qu’il s’agit d’un sous-menu dans le menu contextuel. Les éléments de menu, les points d’insertion et d’autres sous-menus peuvent être ajoutés à ce sous-menu à l’aide de leur lCommandIDIInsertionPointIDsous-menu .

  • MF_BITMAP et MF_OWNERDRAW Ces indicateurs ne sont pas autorisés et entraînent une valeur de retour de E_INVALIDARG.

  • MF_SEPARATOR dessine une ligne de division horizontale. Seul IContextMenuProvider l’ajout d’éléments de menu avec MF_SEPARATOR ensemble est autorisé.

  • MF_CHECKED Place une marque de case activée en regard de l’élément de menu.

  • MF_DISABLED Désactive l’élément de menu afin qu’il ne puisse pas être sélectionné, mais l’indicateur ne le grise pas.

  • MF_ENABLED Active l’élément de menu afin qu’il puisse être sélectionné, en le rétablissant à partir de son état grisé.

  • MF_GRAYED Désactive l’élément de menu, le grisant afin qu’il ne puisse pas être sélectionné.

  • MF_MENUBARBREAK Functions identique à l’indicateur MF_MENUBREAK pour une barre de menus. Pour un menu déroulant, un sous-menu ou un menu contextuel, la nouvelle colonne est séparée de l’ancienne colonne par une ligne verticale.

  • MF_MENUBREAK Place l’élément sur une nouvelle ligne (pour une barre de menus) ou dans une nouvelle colonne (pour un menu déroulant, un sous-menu ou un menu contextuel) sans séparer les colonnes.

  • MF_UNCHECKED N’place pas de marque de case activée en regard de l’élément (valeur par défaut).

Les groupes d’indicateurs suivants ne peuvent pas être utilisés ensemble :

  • MF_DISABLED, MF_ENABLED et MF_GRAYED.

  • MF_MENUBARBREAK et MF_MENUBREAK.

  • MF_CHECKED et MF_UNCHECKED.

CSnapInItemImpl ::UpdateToolbarButton

Appelez cette fonction pour modifier un bouton de barre d’outils, de l’objet composant logiciel enfichable, avant qu’il ne s’affiche.

BOOL UpdateToolbarButton(UINT id, BYTE fsState);

Paramètres

id
Spécifie l’ID de bouton du bouton de barre d’outils à mettre à jour.

fsState
Spécifie un état du bouton de barre d’outils. Si cet état doit être défini, retournez TRUE. Il peut s’agir d’une combinaison des indicateurs suivants :

  • ACTIVÉ Le bouton accepte l’entrée utilisateur. Un bouton qui n’a pas cet état n’accepte pas l’entrée utilisateur et est grisé.

  • ACTIVÉ Le bouton a le style CHECKED et est enfoncé.

  • MASQUÉ Le bouton n’est pas visible et ne peut pas recevoir d’entrée utilisateur.

  • INDETERMINATE Le bouton est grisé.

  • BUTTONPRESSED Le bouton est enfoncé.

Voir aussi

Vue d’ensemble de la classe