Partilhar via


Classe CSnapInItemImpl

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

Importante

Essa classe e os respectivos membros não podem ser usados em aplicativos executados no Windows Runtime.

Sintaxe

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

Parâmetros

T
Sua classe, derivada de CSnapInItemImpl.

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

Membros

Construtores públicos

Nome Descrição
CSnapInItemImpl::CSnapInItemImpl Construtor.

Métodos públicos

Nome Descrição
CSnapInItemImpl::AddMenuItems Adiciona itens de menu a um menu de contexto.
CSnapInItemImpl::Command Chamado pelo console quando um item de menu personalizado é selecionado.
CSnapInItemImpl::CreatePropertyPages Adiciona páginas à folha de propriedades do snap-in.
CSnapInItemImpl::FillData Copia informações sobre o objeto snap-in em um fluxo especificado.
CSnapInItemImpl::GetResultPaneInfo Recupera a estrutura RESULTDATAITEM do snap-in.
CSnapInItemImpl::GetResultViewType Determina o tipo de exibição usado pelo painel de resultados.
CSnapInItemImpl::GetScopePaneInfo Recupera a estrutura SCOPEDATAITEM do snap-in.
CSnapInItemImpl::Notify Chamado pelo console para notificar o snap-in das ações executadas pelo usuário.
CSnapInItemImpl::QueryPagesFor Chamado para ver se o nó snap-in dá suporte a páginas de propriedade.
CSnapInItemImpl::SetMenuInsertionFlags Modifica os sinalizadores de inserção de menu para um objeto snap-in.
CSnapInItemImpl::SetToolbarButtonInfo Define as informações do botão especificado da barra de ferramentas.
CSnapInItemImpl::UpdateMenuState Atualiza o estado de um item de menu de contexto.
CSnapInItemImpl::UpdateToolbarButton Atualiza o estado do botão especificado da barra de ferramentas.

Membros de Dados Públicos

Nome Descrição
CSnapInItemImpl::m_bstrDisplayName O nome do objeto de snap-in.
CSnapInItemImpl::m_resultDataItem A estrutura do Windows RESULTDATAITEM usada pelo objeto CSnapInItemImpl.
CSnapInItemImpl::m_scopeDataItem A estrutura do Windows SCOPEDATAITEM usada pelo objeto CSnapInItemImpl.

Comentários

CSnapInItemImpl fornece uma implementação básica para um objeto de nó de snap-in, como adicionar itens de menu e barras de ferramentas e encaminhar comandos para o nó de snap-in para a função de manipulador apropriada. Esses recursos são implementados usando várias interfaces e tipos de mapa diferentes. A implementação padrão manipula as notificações enviadas ao objeto de nó determinando a instância correta da classe derivada e encaminhando a mensagem para a instância correta.

Hierarquia de herança

CSnapInItem

CSnapInItemImpl

Requisitos

Cabeçalho: atlsnap.h

CSnapInItemImpl::AddMenuItems

Esse método implementa a função deIExtendContextMenu::AddMenuItems do Win32.

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

Parâmetros

piCallback
[entrada] Ponteiro para o IContextMenuCallback que pode adicionar itens ao menu de contexto.

pInsertionAllowed
[entrada, saída] Identifica pontos de inserção definidos pelo MMC (Console de Gerenciamento da Microsoft) que podem ser usados. Isso pode ser uma combinação dos seguintes sinalizadores:

  • CCM_INSERTIONALLOWED_TOP Itens podem ser inseridos na parte superior de um menu de contexto.

  • CCM_INSERTIONALLOWED_NEW Itens podem ser inseridos no submenu Criar Novo.

  • CCM_INSERTIONALLOWED_TASK Itens podem ser inseridos no submenu Tarefa.

  • CCM_INSERTIONALLOWED_VIEW Itens podem ser inseridos no menu de exibição da barra de ferramentas ou no submenu Exibir do menu de contexto do painel de resultados.

tipo
[entrada] Especifica o tipo do objeto. Ele pode ter um dos seguintes valores:

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

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

  • CCT_SNAPIN_MANAGER Objeto de dados para o contexto do gerenciador de snap-in.

  • CCT_UNINITIALIZED Objeto de dados tem um tipo inválido.

CSnapInItemImpl::Command

Esse método implementa a função de IExtendContextMenu::Command do Win32.

Command(long lCommandID, DATA_OBJECT_TYPES type);

Parâmetros

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

tipo
[entrada] Especifica o tipo do objeto. Ele pode ter um dos seguintes valores:

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

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

  • CCT_SNAPIN_MANAGER Objeto de dados para o contexto do gerenciador de snap-in.

  • CCT_UNINITIALIZED Objeto de dados tem um tipo inválido.

CSnapInItemImpl::CreatePropertyPages

Esse método implementa a função de IExtendPropertySheet::CreatePropertyPages do Win32.

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

Parâmetros

lpProvider
[entrada] Ponteiro para a interface IPropertySheetCallback.

handle
[entrada] Especifica o identificador usado para rotear a mensagem de notificação MMCN_PROPERTY_CHANGE para a classe de dados apropriada.

pUnk
[entrada] Ponteiro para a interface IExtendPropertySheet no objeto que contém informações de contexto sobre o nó.

tipo
[entrada] Especifica o tipo do objeto. Ele pode ter um dos seguintes valores:

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

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

  • CCT_SNAPIN_MANAGER Objeto de dados para o contexto do gerenciador de snap-in.

  • CCT_UNINITIALIZED Objeto de dados tem um tipo inválido.

CSnapInItemImpl::CSnapInItemImpl

Constrói um objeto CSnapInItemImpl.

CSnapInItemImpl();

CSnapInItemImpl::FillData

Essa função é chamada para recuperar informações sobre o item.

FillData(CLIPFORMAT cf, LPSTREAM pStream);

Parâmetros

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

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

Comentários

Para implementar corretamente essa função, copie as informações corretas para o fluxo (pStream), dependendo do formato de área de transferência indicado pelo cf.

CSnapInItemImpl::GetResultViewType

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

GetResultViewType(
    LPOLESTR* ppViewType,
    long* pViewOptions);

Parâmetros

ppViewType
[saída] Ponteiro para o endereço do tipo de exibição retornado.

pViewOptions
[saída] Ponteiro para a enumeração MMC_VIEW_OPTIONS, que fornece ao console opções especificadas pelo snap-in proprietário. Este valor pode ser um dos seguintes:

  • MMC_VIEW_OPTIONS_NOLISTVIEWS = 0x00000001 Informa ao console para se abster de apresentar opções de exibição de lista padrão no menu Exibir. Permite que o snap-in exiba suas próprias exibições personalizadas somente no painel de exibição de resultados. Esse é o único sinalizador de opção definido no momento.

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

CSnapInItemImpl::GetScopePaneInfo

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

GetScopePaneInfo (SCOPEDATAITEM* pScopeDataItem);

Parâmetros

pScopeDataItem
[saída] Um ponteiro para a estrutura SCOPEDATAITEM do objeto CSnapInItemImpl.

CSnapInItemImpl::GetResultPaneInfo

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

GetResultPaneInfo (RESULTDATAITEM* pResultDataItem);

Parâmetros

pResultDataItem
[saída] Um ponteiro para a estrutura RESULTDATAITEM do objeto CSnapInItemImpl.

CSnapInItemImpl::m_bstrDisplayName

Contém a cadeia de caracteres exibida para o item de nó.

CComBSTR m_bstrDisplayName;

CSnapInItemImpl::m_scopeDataItem

A estrutura SCOPEDATAITEM do objeto de dados do snap-in.

SCOPEDATAITEM m_scopeDataItem;

CSnapInItemImpl::m_resultDataItem

A estrutura RESULTDATAITEM do objeto de dados do snap-in.

RESULTDATAITEM m_resultDataItem;

CSnapInItemImpl::Notify

Chamado quando o objeto de snap-in é acionado pelo usuário.

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

Parâmetros

event
[entrada] Identifica uma ação executada por um usuário. As seguintes notificações são possíveis:

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

  • MMCN_ADD_IMAGES Enviado para adicionar imagens ao painel de resultados.

  • MMCN_BTN_CLICK Enviado quando o usuário clica em um dos botões da barra de ferramentas.

  • MMCN_CLICK Enviado quando um usuário clica em um botão do mouse em um item de exibição de lista.

  • MMCN_DBLCLICK Enviado quando um usuário clica duas vezes em um botão do mouse em um item de exibição de lista.

  • MMCN_DELETE Enviado para informar ao snap-in que o objeto deve ser excluído.

  • MMCN_EXPAND Enviado quando uma pasta precisa ser expandida ou reduzida.

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

  • MMCN_PROPERTY_CHANGE Enviado para notificar um objeto de snap-in que a exibição do objeto de snap-in está prestes a ser alterada.

  • MMCN_REMOVE_CHILDREN Enviado quando o snap-in deve excluir toda a subárvore adicionada abaixo do nó especificado.

  • MMCN_RENAME Enviou a primeira vez para consultar uma renomeação e a segunda vez para fazer a renomeação.

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

  • MMCN_SHOW Enviado quando um item de escopo é selecionado ou desmarcado pela primeira vez.

  • MMCN_VIEW_CHANGE Enviado quando o snap-in pode atualizar todos os modos de exibição quando ocorre uma alteração.

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

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

pComponentData
[saída] Um ponteiro para o objeto que implementa IComponentData. Esse parâmetro será NULL se a notificação não estiver sendo encaminhada de IComponentData::Notify.

pComponent
[saída] Um ponteiro para o objeto que implementa IComponent. Esse parâmetro será NULL se a notificação não estiver sendo encaminhada de IComponent::Notify.

tipo
[entrada] Especifica o tipo do objeto. Ele pode ter um dos seguintes valores:

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

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

  • CCT_SNAPIN_MANAGER Objeto de dados para o contexto do gerenciador de snap-in.

  • CCT_UNINITIALIZED Objeto de dados tem um tipo inválido.

CSnapInItemImpl::QueryPagesFor

Chamado para ver se o nó snap-in dá suporte a páginas de propriedade.

QueryPagesFor(DATA_OBJECT_TYPES type);

CSnapInItemImpl::SetMenuInsertionFlags

Chame essa função para modificar os sinalizadores de inserção de menu, especificados por pInsertionAllowed, para o objeto de snap-in.

void SetMenuInsertionFlags(
    bool bBeforeInsertion,
    long* pInsertionAllowed);

Parâmetros

bBeforeInsertion
[entrada] Diferente de zero se a função deve ser chamada antes que os itens sejam adicionados ao menu de contexto, caso contrário, 0.

pInsertionAllowed
[entrada, saída] Identifica pontos de inserção definidos pelo MMC (Console de Gerenciamento da Microsoft) que podem ser usados. Isso pode ser uma combinação dos seguintes sinalizadores:

  • CCM_INSERTIONALLOWED_TOP Itens podem ser inseridos na parte superior de um menu de contexto.

  • CCM_INSERTIONALLOWED_NEW Itens podem ser inseridos no submenu Criar Novo.

  • CCM_INSERTIONALLOWED_TASK Itens podem ser inseridos no submenu Tarefa.

  • CCM_INSERTIONALLOWED_VIEW Itens podem ser inseridos no menu de exibição da barra de ferramentas ou no submenu Exibir do menu de contexto do painel de resultados.

Comentários

Se você estiver desenvolvendo um snap-in primário, poderá redefinir qualquer um dos sinalizadores de inserção como uma 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 o sinalizador CCM_INSERTIONALLOWED_NEW para impedir que as extensões adicionem seus próprios itens de menu Criar Novo.

Você não deve tentar definir bits em pInsertionAllowed que foram originalmente limpos. Versões futuras do MMC podem usar bits não definidos no momento, portanto, você não deve alterar os bits que atualmente não estão definidos.

CSnapInItemImpl::SetToolbarButtonInfo

Chame essa função para modificar os estilos de botão da barra de ferramentas, do objeto de snap-in, antes que a barra de ferramentas seja criada.

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

Parâmetros

id
[entrada] A ID do botão da barra de ferramentas a ser definida.

fsState
[entrada] Os sinalizadores de estado do botão. Pode ser um ou mais dos seguintes:

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

  • TBSTATE_ENABLED O botão aceita a entrada do usuário. Um botão que não tem esse estado não aceita a entrada do usuário e está esmaecido.

  • TBSTATE_HIDDEN O botão não está visível e não pode receber entrada do usuário.

  • TBSTATE_INDETERMINATE O botão está esmaecido.

  • TBSTATE_PRESSED O botão está sendo pressionado.

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

Tipo de fs
[entrada] Os sinalizadores de estado do botão. Pode ser um ou mais dos seguintes:

  • TBSTYLE_BUTTON Cria um botão de push padrão.

  • TBSTYLE_CHECK Cria um botão que alterna entre os estados pressionados e não pressionados sempre que o usuário clica nele. O botão tem uma cor de tela de fundo diferente quando está no estado pressionado.

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

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

  • TBSTYLE_SEP Cria um separador, fornecendo uma pequena lacuna entre grupos de botões. Um botão que tem esse estilo não recebe entrada do usuário.

CSnapInItemImpl::UpdateMenuState

Chame essa função para modificar um item de menu antes de ele ser inserido no menu de contexto do objeto de snap-in.

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

Parâmetros

id
[entrada] A ID do item de menu a ser definido.

pBuf
[entrada] Um ponteiro para a cadeia de caracteres para o item de menu a ser atualizado.

sinalizadores
[entrada] Especifica os novos sinalizadores de estado. Isso pode ser uma combinação dos seguintes sinalizadores:

  • MF_POPUP Especifica que esse é um submenu no menu de contexto. Itens de menu, pontos de inserção e submenus adicionais podem ser adicionados a esse submenu usando-o lCommandID como seu IInsertionPointID.

  • MF_BITMAP e MF_OWNERDRAW Esses sinalizadores não são permitidos e resultarão em um valor retornado de E_INVALIDARG.

  • MF_SEPARATOR Desenha uma linha divisória horizontal. Apenas IContextMenuProvider tem permissão para adicionar itens de menu com MF_SEPARATOR definido.

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

  • MF_DISABLED Desabilita o item de menu para que ele não possa ser selecionado, mas o sinalizador não o torna esmaecido.

  • MF_ENABLED Habilita o item de menu para que ele possa ser selecionado, restaurando-o de seu estado esmaecido.

  • MF_GRAYED Desabilita o item de menu, esmaecendo-o para que ele não possa ser selecionado.

  • MF_MENUBARBREAK Funciona da mesma forma que o sinalizador 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 em uma nova linha (para uma barra de menus) ou em uma nova coluna (para um menu suspenso, submenu ou menu de atalho) sem separar colunas.

  • MF_UNCHECKED Não coloca uma marca de seleção perto do item (padrão).

Os seguintes grupos de sinalizadores não podem ser usados juntos:

  • MF_DISABLED, MF_ENABLED e MF_GRAYED.

  • MF_MENUBARBREAK e MF_MENUBREAK.

  • MF_CHECKED e MF_UNCHECKED.

CSnapInItemImpl::UpdateToolbarButton

Chame essa função para modificar um botão de barra de ferramentas do objeto de snap-in antes de ser exibido.

BOOL UpdateToolbarButton(UINT id, BYTE fsState);

Parâmetros

id
Especifica a ID do botão da barra de ferramentas a ser atualizado.

fsState
Especifica um estado de botão da barra de ferramentas. Se esse estado deve ser definido, retorna TRUE. Isso pode ser uma combinação dos seguintes sinalizadores:

  • ENABLED O botão aceita a entrada do usuário. Um botão que não tem esse estado não aceita a entrada do usuário e está esmaecido.

  • CHECKED O botão tem o estilo CHECKED e está sendo pressionado.

  • HIDDEN O botão não está visível e não pode receber entrada do usuário.

  • INDETERMINATE O botão está esmaecido.

  • BUTTONPRESSED O botão está sendo pressionado.

Confira também

Visão geral da aula