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 | Met à jour l’état d’un élément de menu contextuel. |
CSnapInItemImpl ::UpdateToolbarButton | Met à 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
.
descripteur
[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 :
TBSTATE_CHECKED Le bouton a le style TBSTYLE_CHECKED et est enfoncé.
TBSTATE_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é.
TBSTATE_HIDDEN Le bouton n’est pas visible et ne peut pas recevoir d’entrée utilisateur.
TBSTATE_INDETERMINATE Le bouton est grisé.
TBSTATE_PRESSED Le bouton est enfoncé.
TBSTATE_WRAP Un saut de ligne suit le bouton. Le bouton doit également avoir la TBSTATE_ENABLED.
fsType
[in] Indicateurs d’état du bouton. Il peut s’agir d’un ou de plusieurs des éléments suivants :
TBSTYLE_BUTTON Crée un bouton Push standard.
TBSTYLE_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é.
TBSTYLE_CHECKGROUP Crée un bouton de vérification qui reste enfoncé jusqu’à ce qu’un autre bouton du groupe soit appuyé.
TBSTYLE_GROUP Crée un bouton qui reste enfoncé jusqu’à ce qu’un autre bouton du groupe soit appuyé.
TBSTYLE_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
lCommandID
IInsertionPointID
sous-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 coche 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 coche 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é.