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