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 suIInsertionPointID
.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.