Partilhar via


Classe CSnapInItemImpl

Observação

A Active Template Library (ATL) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.

Esta classe fornece métodos para implementar um objeto nó snap-in.

Importante

Esta classe e os seus membros não podem ser usados em aplicações que sejam executadas no Windows Runtime.

Sintaxe

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

Parâmetros

T
A sua classe, derivada de CSnapInItemImpl.

bIsExtension
TRUE se o objeto for uma extensão snap-in; caso contrário, FALSO.

Membros

Construtores Públicos

Nome Description
CSnapInItemImpl::CSnapInItemImpl Construtor.

Métodos Públicos

Nome Description
CSnapInItemImpl::AddMenuItems Adiciona itens de menu a um menu contextual.
CSnapInItemImpl::Comando É chamado pela consola quando um item de menu personalizado é selecionado.
CSnapInItemImpl::CreatePropertyPages Adiciona páginas à folha de propriedades do snap-in.
CSnapInItemImpl::FillData Copia a informação do objeto snap-in para um fluxo especificado.
CSnapInItemImpl::GetResultPaneInfo Recupera a RESULTDATAITEM estrutura do snap-in.
CSnapInItemImpl::GetResultViewType Determina o tipo de vista utilizado pelo painel de resultados.
CSnapInItemImpl::GetScopePaneInfo Recupera a SCOPEDATAITEM estrutura do snap-in.
CSnapInItemImpl::Notify Chamado pela consola para notificar o snap-in das ações tomadas pelo utilizador.
CSnapInItemImpl::QueryPagesFor Liguei para ver se o nó snap-in suporta páginas de propriedades.
CSnapInItemImpl::SetMenuInsertionFlags Modifica as flags de inserção do menu para um objeto de encaixe.
CSnapInItemImpl::SetToolbarButtonInfo Define a informação do botão da barra de ferramentas especificado.
CSnapInItemImpl::UpdateMenuState Atualiza o estado de um item do menu contextual.
CSnapInItemImpl::BotãoUpdateToolbarButton Atualiza o estado do botão da barra de ferramentas especificado.

Membros de Dados Públicos

Nome Description
CSnapInItemImpl::m_bstrDisplayName O nome do objeto de encaixe.
CSnapInItemImpl::m_resultDataItem A estrutura do Windows RESULTDATAITEM usada pelo CSnapInItemImpl objeto.
CSnapInItemImpl::m_scopeDataItem A estrutura do Windows SCOPEDATAITEM usada pelo CSnapInItemImpl objeto.

Observações

CSnapInItemImpl fornece uma implementação básica para um objeto nó snap-in, como adicionar itens de menu e barras de ferramentas, e encaminhar comandos para o nó snap-in para a função handler apropriada. Estas funcionalidades são implementadas através de várias interfaces e tipos de mapas diferentes. A implementação padrão trata das notificações enviadas ao objeto nó determinando a instância correta da classe derivada e depois encaminhando a mensagem para a instância correta.

Hierarquia de herança

CSnapInItem

CSnapInItemImpl

Requerimentos

Cabeçalho: atlsnap.h

CSnapInItemImpl::AddMenuItems

Este método implementa a função Win32 IExtendContextMenu::AddMenuItems.

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

Parâmetros

piCallback
[dentro] Apontador para o IContextMenuCallback que pode adicionar itens ao menu de contexto.

pInserçãoPermitida
[inspira, expira] Identifica pontos de inserção de itens de menu definidos pela Microsoft Management Console (MMC) que podem ser utilizados. Isto pode ser uma combinação das seguintes bandeiras:

  • CCM_INSERTIONALLOWED_TOP Itens podem ser inseridos no topo de um menu contextual.

  • CCM_INSERTIONALLOWED_NEW Itens podem ser inseridos no submenu Criar Novo.

  • CCM_INSERTIONALLOWED_TASK Itens podem ser inseridos no submenu de Tarefas.

  • CCM_INSERTIONALLOWED_VIEW Os itens podem ser inseridos no menu de visualização da barra de ferramentas ou no submenu de Visualização do menu contextual do painel de resultados.

type
[dentro] Especifica o tipo de objeto. Pode ter um dos seguintes valores:

  • CCT_SCOPE Objeto de dados para contexto do painel de escopo.

  • CCT_RESULT Objeto de dados para o contexto do painel de resultados.

  • CCT_SNAPIN_MANAGER Objeto Data para contexto de snap-in manager.

  • CCT_UNINITIALIZED objeto Data tem um tipo inválido.

CSnapInItemImpl::Comando

Este método implementa a função Win32 IExtendContextMenu::Command.

Command(long lCommandID, DATA_OBJECT_TYPES type);

Parâmetros

lCommandID
[dentro] Especifica o identificador de comando do item do menu.

type
[dentro] Especifica o tipo de objeto. Pode ter um dos seguintes valores:

  • CCT_SCOPE Objeto de dados para contexto do painel de escopo.

  • CCT_RESULT Objeto de dados para o contexto do painel de resultados.

  • CCT_SNAPIN_MANAGER Objeto Data para contexto de snap-in manager.

  • CCT_UNINITIALIZED objeto Data tem um tipo inválido.

CSnapInItemImpl::CreatePropertyPages

Este método implementa a função Win32 IExtendPropertySheet::CreatePropertyPages.

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

Parâmetros

lpProvider
[dentro] Apontador para a IPropertySheetCallback interface.

Pega
[dentro] Especifica o handle usado para encaminhar a mensagem de notificação MMCN_PROPERTY_CHANGE para a classe de dados apropriada.

pUnk
[dentro] Apontador para a IExtendPropertySheet interface no objeto que contém informação de contexto sobre o nó.

type
[dentro] Especifica o tipo de objeto. Pode ter um dos seguintes valores:

  • CCT_SCOPE Objeto de dados para contexto do painel de escopo.

  • CCT_RESULT Objeto de dados para o contexto do painel de resultados.

  • CCT_SNAPIN_MANAGER Objeto Data para contexto de snap-in manager.

  • CCT_UNINITIALIZED objeto Data tem um tipo inválido.

CSnapInItemImpl::CSnapInItemImpl

Constrói um CSnapInItemImpl objeto.

CSnapInItemImpl();

CSnapInItemImpl::FillData

Esta função é chamada para recolher informação sobre o item.

FillData(CLIPFORMAT cf, LPSTREAM pStream);

Parâmetros

cf
[dentro] O formato (texto, texto enriquecido ou texto enriquecido com itens OLE) da Área de Transferência.

pStream
[dentro] Um ponteiro para o fluxo que contém os dados do objeto.

Observações

Para implementar corretamente esta função, copie a informação correta para o fluxo (pStream), dependendo do formato Clipboard indicado por cf.

CSnapInItemImpl::GetResultViewType

Chame esta função para recuperar o tipo de vista para o painel de resultados do objeto snap-in.

GetResultViewType(
    LPOLESTR* ppViewType,
    long* pViewOptions);

Parâmetros

ppViewType
[fora] Apontador para o endereço do tipo de vista devolvido.

pViewOptions
[fora] Apontador para a enumeração MMC_VIEW_OPTIONS, que fornece à consola opções especificadas pelo snap-in proprietário. Esse valor pode ser um dos seguintes:

  • MMC_VIEW_OPTIONS_NOLISTVIEWS = 0x00000001 Diz à consola para se abster de apresentar opções padrão de vista de lista no menu Visualizar . Permite que o snap-in mostre as suas próprias vistas personalizadas apenas no painel de resultados da visualização. Este é o único flag de opção definido neste momento.

  • MMC_VIEW_OPTIONS_NONE = 0 Permite as opções de visualização padrão.

CSnapInItemImpl::GetScopePaneInfo

Chame esta função para recuperar a SCOPEDATAITEM estrutura do snap-in.

GetScopePaneInfo (SCOPEDATAITEM* pScopeDataItem);

Parâmetros

pScopeDataItem
[fora] Um apontador para a SCOPEDATAITEM estrutura do CSnapInItemImpl objeto.

CSnapInItemImpl::GetResultPaneInfo

Chame esta função para recuperar a RESULTDATAITEM estrutura do snap-in.

GetResultPaneInfo (RESULTDATAITEM* pResultDataItem);

Parâmetros

pResultDataItem
[fora] Um apontador para a RESULTDATAITEM estrutura do CSnapInItemImpl objeto.

CSnapInItemImpl::m_bstrDisplayName

Contém a string apresentada para o item do nó.

CComBSTR m_bstrDisplayName;

CSnapInItemImpl::m_scopeDataItem

A SCOPEDATAITEM estrutura do objeto de dados snap-in.

SCOPEDATAITEM m_scopeDataItem;

CSnapInItemImpl::m_resultDataItem

A estrutura RESULTDATAITEM do objeto de dados snap-in.

RESULTDATAITEM m_resultDataItem;

CSnapInItemImpl::Notify

Chamado quando o objeto snap-in é atingido pelo utilizador.

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

Parâmetros

evento
[dentro] Identifica uma ação tomada por um utilizador. As seguintes notificações são possíveis:

  • MMCN_ACTIVATE Enviado quando uma janela está a ser ativada e desativada.

  • MMCN_ADD_IMAGES Enviado para adicionar imagens ao painel de resultados.

  • MMCN_BTN_CLICK Enviado quando o utilizador clica num dos botões da barra de ferramentas.

  • MMCN_CLICK Enviado quando um utilizador clica no botão do rato num item de vista de lista.

  • MMCN_DBLCLICK Enviado quando um utilizador faz duplo clique num botão do rato num item de vista de lista.

  • MMCN_DELETE Enviado para informar o snap-in de que o objeto deve ser eliminado.

  • MMCN_EXPAND Enviado quando uma pasta precisa de ser expandida ou contraída.

  • MMCN_MINIMIZED Enviado quando uma janela está a ser minimizada ou maximizada.

  • MMCN_PROPERTY_CHANGE Enviado para notificar um objeto snap-in que a visão do objeto snap-in está prestes a mudar.

  • MMCN_REMOVE_CHILDREN Enviado quando o snap-in tem de eliminar toda a subárvore que foi adicionada abaixo do nó especificado.

  • MMCN_RENAME Enviado na primeira vez para pedir uma renomeação e na segunda para fazer a renomeação.

  • MMCN_SELECT Enviado quando um item no escopo ou painel de visualização de resultados é selecionado.

  • MMCN_SHOW Enviado quando um item de âmbito é selecionado ou desselecionado pela primeira vez.

  • MMCN_VIEW_CHANGE Enviado quando o snap-in pode atualizar todas as vistas quando ocorre uma alteração.

arg
[dentro] Depende do tipo de notificação.

param
[dentro] Depende do tipo de notificação.

pComponentData
[fora] Um apontador para o objeto que implementa IComponentData. Este parâmetro é NULL se a notificação não estiver a ser encaminhada de IComponentData::Notify.

pComponent
[fora] Um apontador para o objeto que implementa IComponent. Este parâmetro é NULL se a notificação não estiver a ser encaminhada de IComponent::Notify.

type
[dentro] Especifica o tipo de objeto. Pode ter um dos seguintes valores:

  • CCT_SCOPE Objeto de dados para contexto do painel de escopo.

  • CCT_RESULT Objeto de dados para o contexto do painel de resultados.

  • CCT_SNAPIN_MANAGER Objeto Data para contexto de snap-in manager.

  • CCT_UNINITIALIZED objeto Data tem um tipo inválido.

CSnapInItemImpl::QueryPagesFor

Liguei para ver se o nó snap-in suporta páginas de propriedades.

QueryPagesFor(DATA_OBJECT_TYPES type);

CSnapInItemImpl::SetMenuInsertionFlags

Chame esta função para modificar os flags de inserção do menu, especificados por pInsertionAllowed, para o objeto de encaixe.

void SetMenuInsertionFlags(
    bool bBeforeInsertion,
    long* pInsertionAllowed);

Parâmetros

bAntesDeInserção
[dentro] Não nula se a função deve ser chamada antes de os itens serem adicionados ao menu contextual; caso contrário, 0.

pInserçãoPermitida
[inspira, expira] Identifica pontos de inserção de itens de menu definidos pela Microsoft Management Console (MMC) que podem ser utilizados. Isto pode ser uma combinação das seguintes bandeiras:

  • CCM_INSERTIONALLOWED_TOP Itens podem ser inseridos no topo de um menu contextual.

  • CCM_INSERTIONALLOWED_NEW Itens podem ser inseridos no submenu Criar Novo.

  • CCM_INSERTIONALLOWED_TASK Itens podem ser inseridos no submenu de Tarefas.

  • CCM_INSERTIONALLOWED_VIEW Os itens podem ser inseridos no menu de visualização da barra de ferramentas ou no submenu de Visualização do menu contextual do painel de resultados.

Observações

Se estiveres a desenvolver um snap-in primário, podes repor qualquer um dos flags de inserção como forma de restringir o tipo de itens de menu que uma extensão de terceiros pode adicionar. Por exemplo, o snap-in primário pode limpar a flag de CCM_INSERTIONALLOWED_NEW para impedir que as extensões adicionem os seus próprios itens do menu Criar Novo.

Não deve tentar definir bits em pInsertionAllowed que foram originalmente eliminados. Versões futuras do MMC podem usar bits não definidos atualmente, por isso não deve alterar bits que não estejam definidos.

CSnapInItemImpl::SetToolbarButtonInfo

Chame esta função para modificar quaisquer estilos de botões da barra de ferramentas, do objeto de encaixe, antes da criação da barra de ferramentas.

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

Parâmetros

ID
[dentro] O ID do botão da barra de ferramentas a definir.

fsState
[dentro] As bandeiras do estado do botão. Pode ser um ou mais dos seguintes:

  • TBSTATE_CHECKED O botão tem o estilo TBSTYLE_CHECKED e está a ser pressionado.

  • TBSTATE_ENABLED O botão aceita a entrada do utilizador. Um botão que não tem este estado não aceita entrada do utilizador e fica cinzento.

  • TBSTATE_HIDDEN O botão não é visível e não pode receber a entrada do utilizador.

  • TBSTATE_INDETERMINATE O botão está cinzento.

  • TBSTATE_PRESSED O botão está a ser pressionado.

  • TBSTATE_WRAP Uma quebra de linha segue o botão. O botão também tem de ter a TBSTATE_ENABLED.

fsType
[dentro] As bandeiras do estado do botão. Pode ser um ou mais dos seguintes:

  • TBSTYLE_BUTTON Cria um botão padrão.

  • TBSTYLE_CHECK Cria um botão que alterna entre os estados pressionado e não pressionado cada vez que o utilizador clica. O botão tem uma cor de fundo diferente quando está no estado pressionado.

  • TBSTYLE_CHECKGROUP Cria um botão de verificação que permanece pressionado até que outro botão do grupo seja pressionado.

  • TBSTYLE_GROUP Cria um botão que permanece pressionado até que outro botão do grupo seja pressionado.

  • TBSTYLE_SEP Cria um separador, criando um pequeno espaço entre grupos de botões. Um botão com este estilo não recebe input do utilizador.

CSnapInItemImpl::UpdateMenuState

Chame esta função para modificar um item do menu antes de este ser inserido no menu de contexto do objeto de encaixe.

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

Parâmetros

ID
[dentro] O ID do item do menu a definir.

pBuf
[dentro] Um apontador para a string para o item do menu a atualizar.

flags
[dentro] Especifica as novas bandeiras estaduais. Isto pode ser uma combinação das seguintes bandeiras:

  • MF_POPUP Especifica que este é um submenu dentro do menu contextual. Itens do menu, pontos de inserção e submenus adicionais podem ser adicionados a este submenu usando o IInsertionPointIDseu lCommandID .

  • MF_BITMAP e MF_OWNERDRAW Estas bandeiras não são permitidas e resultarão num valor de retorno de E_INVALIDARG.

  • MF_SEPARATOR Desenha uma linha divisória horizontal. Só IContextMenuProvider é permitido adicionar itens do menu com MF_SEPARATOR definido.

  • MF_CHECKED Coloca uma marca de seleção ao lado do item do menu.

  • MF_DISABLED Desativa o item do menu para que não possa ser selecionado, mas a flag não o acente de cinzento.

  • MF_ENABLED Ativa o item do menu para que possa ser selecionado, restaurando-o do seu estado cinzento.

  • MF_GRAYED Desativa o item do menu, tornando-o cinzento para que não possa ser selecionado.

  • MF_MENUBARBREAK Funciona da mesma forma que a flag de MF_MENUBREAK para uma barra de menus. Para um menu suspenso, submenu ou menu de atalho, a nova coluna é separada da coluna antiga por uma linha vertical.

  • MF_MENUBREAK Coloca o item numa nova linha (para uma barra de menu) ou numa nova coluna (para um menu suspenso, submenu ou menu de atalho) sem separar colunas.

  • MF_UNCHECKED Não coloca uma marca de seleção ao lado do item (por defeito).

Os seguintes grupos de bandeiras não podem ser usados em conjunto:

  • MF_DISABLED, MF_ENABLED e MF_GRAYED.

  • MF_MENUBARBREAK e MF_MENUBREAK.

  • MF_CHECKED e MF_UNCHECKED.

CSnapInItemImpl::BotãoUpdateToolbarButton

Chame esta função para modificar um botão da barra de ferramentas, do objeto de encaixe, antes de este ser exibido.

BOOL UpdateToolbarButton(UINT id, BYTE fsState);

Parâmetros

ID
Especifica o ID do botão da barra de ferramentas a atualizar.

fsState
Especifica o estado de um botão na barra de ferramentas. Se este estado for definido, devolve TRUE. Isto pode ser uma combinação das seguintes bandeiras:

  • ATIVADO O botão aceita a entrada do utilizador. Um botão que não tem este estado não aceita entrada do utilizador e fica cinzento.

  • CHECK: O botão tem o estilo CHECKED e está a ser pressionado.

  • OCULTO O botão não é visível e não pode receber a entrada do utilizador.

  • INDETERMINADO O botão está cinzento.

  • BOTÃO PRESSIONADO O botão está a ser pressionado.

Consulte também

Visão geral da classe