Compartir a través de


CSnapInItemImpl (clase)

Esta clase proporciona métodos para implementar un objeto de nodo de complemento.

Importante

Esta clase y sus miembros no se pueden usar en las aplicaciones que se ejecutan en Windows Runtime.

Sintaxis

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

Parámetros

T
La clase, que se deriva de CSnapInItemImpl.

bIsExtension
TRUE si el objeto es una extensión de complemento; en caso contrario, FALSE.

Miembros

Constructores públicos

Nombre Descripción
CSnapInItemImpl::CSnapInItemImpl Constructor.

Métodos públicos

Nombre Descripción
CSnapInItemImpl::AddMenuItems Agrega elementos de menú al menú contextual.
CSnapInItemImpl::Command Lo llama la consola cuando se selecciona un elemento de menú personalizado.
CSnapInItemImpl::CreatePropertyPages Agrega páginas a la hoja de propiedades del complemento.
CSnapInItemImpl::FillData Copia información sobre el objeto de complemento en una secuencia especificada.
CSnapInItemImpl::GetResultPaneInfo Recupera la estructura RESULTDATAITEM del complemento.
CSnapInItemImpl::GetResultViewType Determina el tipo de vista utilizado por el panel de resultados.
CSnapInItemImpl::GetScopePaneInfo Recupera la estructura SCOPEDATAITEM del complemento.
CSnapInItemImpl::Notify Lo llama la consola para notificar al complemento las acciones realizadas por el usuario.
CSnapInItemImpl::QueryPagesFor Se llama para ver si el nodo de complemento admite páginas de propiedades.
CSnapInItemImpl::SetMenuInsertionFlags Modifica las marcas de inserción de menús para un objeto de complemento.
CSnapInItemImpl::SetToolbarButtonInfo Establece la información del botón de barra de herramientas especificado.
CSnapInItemImpl::UpdateMenuState Actualizaciones del estado de un elemento de menú contextual.
CSnapInItemImpl::UpdateToolbarButton Actualizaciones del estado del botón de barra de herramientas especificado.

Miembros de datos públicos

Nombre Descripción
CSnapInItemImpl::m_bstrDisplayName Nombre del objeto de complemento.
CSnapInItemImpl::m_resultDataItem La estructura RESULTDATAITEM de Windows que usa el objeto CSnapInItemImpl.
CSnapInItemImpl::m_scopeDataItem La estructura SCOPEDATAITEM de Windows que usa el objeto CSnapInItemImpl.

Comentarios

CSnapInItemImpl proporciona una implementación básica para un objeto de nodo de complemento, como agregar elementos de menú y barras de herramientas, y reenviar comandos para el nodo de complemento a la función de controlador adecuada. Estas características se implementan mediante varias interfaces y tipos de mapa diferentes. La implementación predeterminada controla las notificaciones enviadas al objeto de nodo mediante la determinación de la instancia correcta de la clase derivada y, a continuación, reenvía el mensaje a la instancia correcta.

Jerarquía de herencia

CSnapInItem

CSnapInItemImpl

Requisitos

Encabezado: atlsnap.h

CSnapInItemImpl::AddMenuItems

Este método implementa la función IExtendContextMenu::AddMenuItems de Win32.

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

Parámetros

piCallback
[in] Puntero al IContextMenuCallback que puede agregar elementos al menú contextual.

pInsertionAllowed
[in, out] Identifica los puntos de inserción de elementos de menú definidos por Microsoft Management Console (MMC) que se pueden usar. Puede ser una combinación de las marcas siguientes:

  • CCM_INSERTIONALLOWED_TOP: elementos se pueden insertar en la parte superior de un menú contextual.

  • CCM_INSERTIONALLOWED_NEW: elementos se pueden insertar en el submenú Crear nuevo.

  • CCM_INSERTIONALLOWED_TASK: elementos se pueden insertar en el submenú Tarea.

  • CCM_INSERTIONALLOWED_VIEW: elementos se pueden insertar en el menú de vista de la barra de herramientas o en el submenú Ver del menú contextual del panel de resultados.

type
[in] Especifica el tipo de objeto. Puede tener uno de los siguientes valores:

  • Objeto de datos CCT_SCOPE para el contexto del panel de ámbito.

  • Objeto de datos CCT_RESULT para el contexto del panel de resultados.

  • Objeto de datos CCT_SNAPIN_MANAGER para el contexto del administrador de complementos.

  • Objeto de datos CCT_UNINITIALIZED tiene un tipo no válido.

CSnapInItemImpl::Command

Este método implementa la función IExtendContextMenu::Command de Win32.

Command(long lCommandID, DATA_OBJECT_TYPES type);

Parámetros

lCommandID
[in] Especifica el identificador de comando del elemento de menú.

type
[in] Especifica el tipo de objeto. Puede tener uno de los siguientes valores:

  • Objeto de datos CCT_SCOPE para el contexto del panel de ámbito.

  • Objeto de datos CCT_RESULT para el contexto del panel de resultados.

  • Objeto de datos CCT_SNAPIN_MANAGER para el contexto del administrador de complementos.

  • Objeto de datos CCT_UNINITIALIZED tiene un tipo no válido.

CSnapInItemImpl::CreatePropertyPages

Este método implementa la función IExtendPropertySheet::CreatePropertyPages de Win32.

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

Parámetros

lpProvider
[in] Puntero a la IPropertySheetCallback interfaz.

identificador
[in] Especifica el identificador usado para enrutar el mensaje de notificación MMCN_PROPERTY_CHANGE a la clase de datos adecuada.

pUnk
[in] Puntero a la interfaz IExtendPropertySheet del objeto que contiene información de contexto sobre el nodo.

type
[in] Especifica el tipo de objeto. Puede tener uno de los siguientes valores:

  • Objeto de datos CCT_SCOPE para el contexto del panel de ámbito.

  • Objeto de datos CCT_RESULT para el contexto del panel de resultados.

  • Objeto de datos CCT_SNAPIN_MANAGER para el contexto del administrador de complementos.

  • Objeto de datos CCT_UNINITIALIZED tiene un tipo no válido.

CSnapInItemImpl::CSnapInItemImpl

Construye un objeto CSnapInItemImpl.

CSnapInItemImpl();

CSnapInItemImpl::FillData

Se llama a esta función para recuperar información sobre el elemento.

FillData(CLIPFORMAT cf, LPSTREAM pStream);

Parámetros

cf
[in] Formato (texto, texto enriquecido o texto enriquecido con elementos OLE) del Portapapeles.

pStream
[in] Puntero a la secuencia que contiene los datos del objeto.

Comentarios

Para implementar correctamente esta función, copie la información correcta en la secuencia (pStream), según el formato del Portapapeles indicado por cf.

CSnapInItemImpl::GetResultViewType

Llame a esta función para recuperar el tipo de vista del panel de resultados del objeto de complemento.

GetResultViewType(
    LPOLESTR* ppViewType,
    long* pViewOptions);

Parámetros

ppViewType
[out] Puntero a la dirección del tipo de vista devuelto.

pViewOptions
[out] Puntero a la enumeración MMC_VIEW_OPTIONS, que proporciona a la consola las opciones especificadas por el complemento propietario. Este valor puede ser uno de los siguientes:

  • MMC_VIEW_OPTIONS_NOLISTVIEWS = 0x00000001: indica a la consola que se abstenga de presentar opciones de vista de lista estándar en el menú Ver. Permite que el complemento muestre sus propias vistas personalizadas solo en el panel de vista de resultados. Esta es la única marca de opción definida en este momento.

  • MMC_VIEW_OPTIONS_NONE = 0: permite las opciones de vista predeterminadas.

CSnapInItemImpl::GetScopePaneInfo

Llame a esta función para recuperar la estructura SCOPEDATAITEM del complemento.

GetScopePaneInfo (SCOPEDATAITEM* pScopeDataItem);

Parámetros

pScopeDataItem
[out] Un puntero a la estructura SCOPEDATAITEM del objeto CSnapInItemImpl.

CSnapInItemImpl::GetResultPaneInfo

Llame a esta función para recuperar la estructura RESULTDATAITEM del complemento.

GetResultPaneInfo (RESULTDATAITEM* pResultDataItem);

Parámetros

pResultDataItem
[out] Un puntero a la estructura RESULTDATAITEM del objeto CSnapInItemImpl.

CSnapInItemImpl::m_bstrDisplayName

Contiene la cadena que se muestra para el elemento de nodo.

CComBSTR m_bstrDisplayName;

CSnapInItemImpl::m_scopeDataItem

Estructura SCOPEDATAITEM del objeto de datos del complemento.

SCOPEDATAITEM m_scopeDataItem;

CSnapInItemImpl::m_resultDataItem

Estructura RESULTDATAITEM del objeto de datos del complemento.

RESULTDATAITEM m_resultDataItem;

CSnapInItemImpl::Notify

Se llama cuando el usuario actúa sobre el objeto de complemento.

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

Parámetros

event
[in] Identifica una acción realizada por un usuario. Las siguientes notificaciones son posibles:

  • MMCN_ACTIVATE: enviado cuando se activa y desactiva una ventana.

  • MMCN_ADD_IMAGES: enviado para agregar imágenes al panel de resultados.

  • MMCN_BTN_CLICK: enviado cuando el usuario hace clic en uno de los botones de la barra de herramientas.

  • MMCN_CLICK: enviado cuando un usuario hace clic en un botón del mouse en un elemento de vista de lista.

  • MMCN_DBLCLICK: enviado cuando un usuario hace doble clic en un botón del mouse en un elemento de vista de lista.

  • MMCN_DELETE: enviado para informar al complemento de que se debe eliminar el objeto.

  • MMCN_EXPAND: enviado cuando es necesario expandir o contratar una carpeta.

  • MMCN_MINIMIZED: enviado cuando se minimiza o maximiza una ventana.

  • MMCN_PROPERTY_CHANGE: enviado para notificar a un objeto de complemento que la vista del objeto de complemento está a punto de cambiar.

  • MMCN_REMOVE_CHILDREN: enviado cuando el complemento debe eliminar todo el subárbol que ha agregado debajo del nodo especificado.

  • MMCN_RENAME: enviado la primera vez que se va a consultar un cambio de nombre y la segunda vez para realizar el cambio de nombre.

  • MMCN_SELECT: se envía cuando se selecciona un elemento en el panel de vista de ámbito o resultado.

  • MMCN_SHOW: enviado cuando se selecciona o se deselecciona un elemento de ámbito por primera vez.

  • MMCN_VIEW_CHANGE: enviado cuando el complemento puede actualizar todas las vistas cuando se produce un cambio.

arg
[in] Depende del tipo de notificación.

param
[in] Depende del tipo de notificación.

pComponentData
[out] Puntero al objeto que implementa IComponentData. Este parámetro es null si la notificación no se reenvía desde IComponentData::Notify.

pComponent
[out] Puntero al objeto que implementa IComponent. Este parámetro es null si la notificación no se reenvía desde IComponent::Notify.

type
[in] Especifica el tipo de objeto. Puede tener uno de los siguientes valores:

  • Objeto de datos CCT_SCOPE para el contexto del panel de ámbito.

  • Objeto de datos CCT_RESULT para el contexto del panel de resultados.

  • Objeto de datos CCT_SNAPIN_MANAGER para el contexto del administrador de complementos.

  • Objeto de datos CCT_UNINITIALIZED tiene un tipo no válido.

CSnapInItemImpl::QueryPagesFor

Se llama para ver si el nodo de complemento admite páginas de propiedades.

QueryPagesFor(DATA_OBJECT_TYPES type);

CSnapInItemImpl::SetMenuInsertionFlags

Llame a esta función para modificar las marcas de inserción del menú, especificadas por pInsertionAllowed, para el objeto de complemento.

void SetMenuInsertionFlags(
    bool bBeforeInsertion,
    long* pInsertionAllowed);

Parámetros

bBeforeInsertion
[in] Distinto de cero si se debe llamar a la función antes de agregar elementos al menú contextual; de lo contrario, 0.

pInsertionAllowed
[in, out] Identifica los puntos de inserción de elementos de menú definidos por Microsoft Management Console (MMC) que se pueden usar. Puede ser una combinación de las marcas siguientes:

  • CCM_INSERTIONALLOWED_TOP: elementos se pueden insertar en la parte superior de un menú contextual.

  • CCM_INSERTIONALLOWED_NEW: elementos se pueden insertar en el submenú Crear nuevo.

  • CCM_INSERTIONALLOWED_TASK: elementos se pueden insertar en el submenú Tarea.

  • CCM_INSERTIONALLOWED_VIEW: elementos se pueden insertar en el menú de vista de la barra de herramientas o en el submenú Ver del menú contextual del panel de resultados.

Comentarios

Si está desarrollando un complemento principal, puede restablecer cualquiera de las marcas de inserción como una manera de restringir el tipo de elementos de menú que puede agregar una extensión de terceros. Por ejemplo, el complemento principal puede borrar la marca de CCM_INSERTIONALLOWED_NEW para evitar que las extensiones agreguen sus propios elementos de menú Crear nuevo.

No debe intentar establecer bits en pInsertionAllowed que se borraron originalmente. Las versiones futuras de MMC pueden usar bits no definidos actualmente, por lo que no debe cambiar los bits que no están definidos actualmente.

CSnapInItemImpl::SetToolbarButtonInfo

Llame a esta función para modificar los estilos de los botones de la barra de herramientas, del objeto de complemento, antes de crear la barra de herramientas.

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

Parámetros

id
[in] Identificador del botón de la barra de herramientas que se va a establecer.

fsState
[in] Marcas de estado del botón. Puede ser una o varias de las siguientes:

  • TBSTATE_CHECKED: el botón tiene el estilo TBSTYLE_CHECKED y se está presionando.

  • TBSTATE_ENABLED: el botón acepta la entrada del usuario. Un botón que no tiene este estado no acepta la entrada del usuario y está atenuado.

  • TBSTATE_HIDDEN: el botón no está visible y no puede recibir la entrada del usuario.

  • TBSTATE_INDETERMINATE: el botón está atenuado.

  • TBSTATE_PRESSED: se está presionando el botón.

  • TBSTATE_WRAP: un salto de línea sigue el botón. El botón también debe tener el TBSTATE_ENABLED.

fsType
[in] Marcas de estado del botón. Puede ser una o varias de las siguientes:

  • TBSTYLE_BUTTON: crea un botón de inserción estándar.

  • TBSTYLE_CHECK: crea un botón que alterna entre los estados presionados y no presionados cada vez que el usuario hace clic en él. El botón tiene un color de fondo diferente cuando está en estado presionado.

  • TBSTYLE_CHECKGROUP: crea un botón de verificación que permanece presionado hasta que se presiona otro botón del grupo.

  • TBSTYLE_GROUP: crea un botón que permanece presionado hasta que se presiona otro botón del grupo.

  • TBSTYLE_SEP: crea un separador, lo que proporciona un pequeño espacio entre los grupos de botones. Un botón que tiene este estilo no recibe la entrada del usuario.

CSnapInItemImpl::UpdateMenuState

Llame a esta función para modificar un elemento de menú antes de insertarlo en el menú contextual del objeto de complemento.

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

Parámetros

id
[in] Identificador del elemento de menú que se va a establecer.

pBuf
[in] Puntero a la cadena para que se actualice el elemento de menú.

flags
[in] Especifica las nuevas marcas de estado. Puede ser una combinación de las marcas siguientes:

  • MF_POPUP: especifica que se trata de un submenú dentro del menú contextual. Los elementos de menú, los puntos de inserción y los submenús adicionales se pueden agregar a este submenú mediante su lCommandID como su IInsertionPointID.

  • MF_BITMAP y MF_OWNERDRAW: estas marcas no están permitidas y darán lugar a un valor devuelto de E_INVALIDARG.

  • MF_SEPARATOR: dibuja una línea divisoria horizontal. Solo se permite IContextMenuProvider para agregar elementos de menú con MF_SEPARATOR establecido.

  • MF_CHECKED: sitúa una marca de verificación junto al elemento de menú.

  • MF_DISABLED: deshabilita el elemento de menú para que no se pueda seleccionar, pero la marca no lo atenúa.

  • MF_ENABLED: habilita el elemento de menú para que se pueda seleccionar y restaurarlo a partir de su estado atenuado.

  • MF_GRAYED: deshabilita el elemento de menú, atenuando para que no se pueda seleccionar.

  • MF_MENUBARBREAK: funciona igual que la marca de MF_MENUBREAK para una barra de menús. Para un menú desplegable, submenú o menú contextual, la nueva columna se separa de la columna antigua mediante una línea vertical.

  • MF_MENUBREAK: coloca el elemento en una nueva línea (para una barra de menús) o en una nueva columna (para un menú desplegable, submenú o menú contextual) sin separar columnas.

  • MF_UNCHECKED: no coloca una marca de verificación junto al elemento (valor predeterminado).

Los siguientes grupos de marcas no se pueden usar juntos:

  • MF_DISABLED, MF_ENABLED y MF_GRAYED.

  • MF_MENUBARBREAK y MF_MENUBREAK.

  • MF_CHECKED y MF_UNCHECKED.

CSnapInItemImpl::UpdateToolbarButton

Llame a esta función para modificar un botón de barra de herramientas, del objeto de complemento, antes de que se muestre.

BOOL UpdateToolbarButton(UINT id, BYTE fsState);

Parámetros

id
Especifica el identificador de botón del botón de la barra de herramientas que se va a actualizar.

fsState
Especifica un estado de botón de la barra de herramientas. Si se va a establecer este estado, devuelva TRUE. Puede ser una combinación de las marcas siguientes:

  • ENABLED: el botón acepta la entrada del usuario. Un botón que no tiene este estado no acepta la entrada del usuario y está atenuado.

  • CHECKED: el botón tiene el estilo CHECKED y se está presionando.

  • HIDDEN: el botón no está visible y no puede recibir la entrada del usuario.

  • INDETERMINATE: el botón está atenuado.

  • BUTTONPRESSED: el botón se está presionando.

Consulte también

Información general sobre la clase