Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Essa classe fornece implementações dos métodos IDispatch, sem obter informações de tipo de uma biblioteca de tipos.
Importante
Essa classe e os respectivos membros não podem ser usados em aplicativos executados no Windows Runtime.
Sintaxe
template <UINT nID, class T, const IID* pdiid>
class ATL_NO_VTABLE IDispEventSimpleImpl : public _IDispEventLocator<nID, pdiid>
Parâmetros
Nid
Um identificador exclusivo do objeto de origem. Quando IDispEventSimpleImpl for a classe base para um controle composto, use a ID do recurso do controle contido desejado para esse parâmetro. Em outros casos, use um inteiro arbitrário positivo.
T
A classe do usuário, que é derivada de IDispEventSimpleImpl.
pdiid
O ponteiro para o IID da dispinterface do evento implementado por essa classe.
Membros
Métodos públicos
| Nome | Descrição |
|---|---|
| IDispEventSimpleImpl::Advise | Estabelece uma conexão com a origem do evento padrão. |
| IDispEventSimpleImpl::DispEventAdvise | Estabelece uma conexão com a origem do evento. |
| IDispEventSimpleImpl::DispEventUnadvise | Interrompe a conexão com a origem do evento. |
| IDispEventSimpleImpl::GetIDsOfNames | Retorna E_NOTIMPL. |
| IDispEventSimpleImpl::GetTypeInfo | Retorna E_NOTIMPL. |
| IDispEventSimpleImpl::GetTypeInfoCount | Retorna E_NOTIMPL. |
| IDispEventSimpleImpl::Invoke | Chama os manipuladores de eventos listados no mapa do coletor de eventos. |
| IDispEventSimpleImpl::Unadvise | Interrompe a conexão com a origem do evento padrão. |
Comentários
IDispEventSimpleImpl fornece uma forma de implementar uma dispinterface de evento sem exigir que você forneça o código de implementação para cada método/evento nessa interface. IDispEventSimpleImpl fornece implementações dos métodos IDispatch. Você só precisa fornecer implementações para os eventos nos quais está interessado em manipular.
IDispEventSimpleImpl funciona em conjunto com o mapa do coletor de eventos em sua classe para rotear eventos para a função de manipulador apropriada. Para usar esta classe:
Adicione uma macro SINK_ENTRY_INFO ao mapa do coletor de eventos para cada evento em cada objeto que você deseja manipular.
Forneça informações de tipo para cada evento passando um ponteiro para uma estrutura de _ATL_FUNC_INFO como um parâmetro para cada entrada. Na plataforma x86, o valor
_ATL_FUNC_INFO.ccdeve ser CC_CDECL com o método da função que chama o retorno de chamada de __stdcall.Chame DispEventAdvise para estabelecer a conexão entre o objeto de origem e a classe base.
Chame DispEventUnadvise para interromper a conexão.
Você deve derivar de IDispEventSimpleImpl (usando um valor exclusivo para nID) para cada objeto para o qual você precisa manipular eventos. Você pode reutilizar a classe base cancelando o aviso em um objeto de origem e avisando em outro objeto de origem, mas o número máximo de objetos de origem que podem ser manipulados por um único objeto ao mesmo tempo é limitado pelo número de classes base IDispEventSimpleImpl.
IDispEventSimplImpl fornece a mesma funcionalidade que IDispEventImpl, exceto que ele não obtém informações de tipo sobre a interface em uma biblioteca de tipos. Os assistentes geram código com base apenas em IDispEventImpl, mas você pode usar IDispEventSimpleImpl adicionando o código manualmente. Use IDispEventSimpleImpl quando você não tiver uma biblioteca de tipos que descreva a interface do evento ou queira evitar a sobrecarga associada ao uso da biblioteca de tipos.
Observação
IDispEventImpl e IDispEventSimpleImpl fornecem a própria implementação de IUnknown::QueryInterface permitindo que cada classe base IDispEventImpl ou IDispEventSimpleImpl atue como uma identidade do COM separada, permitindo ainda o acesso direto aos membros da classe em seu objeto COM principal.
A implementação da ATL do C de coletores de eventos do ActiveX dá suporte apenas a valores retornados do tipo HRESULT ou void de seus métodos de manipulador de eventos; qualquer outro valor retornado não tem suporte e seu comportamento é indefinido.
Para obter mais informações, confira Suporte a IDispEventImpl.
Hierarquia de herança
_IDispEvent
_IDispEventLocator
IDispEventSimpleImpl
Requisitos
Cabeçalho: atlcom.h
IDispEventSimpleImpl::Advise
Chame esse método para estabelecer uma conexão com a origem do evento representada pelo pUnk.
HRESULT Advise(IUnknown* pUnk);
Parâmetros
pUnk
[entrada] Um ponteiro para a interface IUnknown do objeto de origem do evento.
Valor de retorno
S_OK ou qualquer valor HRESULT de falha.
Comentários
Depois que a conexão for estabelecida, os eventos disparados do pUnk serão roteados para manipuladores em sua classe por meio do mapa do coletor de eventos.
Observação
Se sua classe derivar de várias classes IDispEventSimpleImpl, você precisará eliminar a ambiguidade das chamadas a esse método fazendo o escopo da chamada com a classe base específica na qual você está interessado.
Advise estabelece uma conexão com a origem do evento padrão, ela obtém o IID da origem do evento padrão do objeto, conforme determinado por AtlGetObjectSourceInterface.
IDispEventSimpleImpl::DispEventAdvise
Chame esse método para estabelecer uma conexão com a origem do evento representada pelo pUnk.
HRESULT DispEventAdvise(IUnknown* pUnk const IID* piid);
Parâmetros
pUnk
[entrada] Um ponteiro para a interface IUnknown do objeto de origem do evento.
piid
Um ponteiro para o IID do objeto de origem do evento.
Valor de retorno
S_OK ou qualquer valor HRESULT de falha.
Comentários
Subsequentemente, os eventos disparados do pUnk serão roteados para manipuladores em sua classe por meio do mapa do coletor de eventos.
Observação
Se sua classe derivar de várias classes IDispEventSimpleImpl, você precisará eliminar a ambiguidade das chamadas a esse método fazendo o escopo da chamada com a classe base específica na qual você está interessado.
DispEventAdvise estabelece uma conexão com a origem do evento especificada em pdiid.
IDispEventSimpleImpl::DispEventUnadvise
Interrompe a conexão com a origem do evento representada pelo pUnk.
HRESULT DispEventUnadvise(IUnknown* pUnk const IID* piid);
Parâmetros
pUnk
[entrada] Um ponteiro para a interface IUnknown do objeto de origem do evento.
piid
Um ponteiro para o IID do objeto de origem do evento.
Valor de retorno
S_OK ou qualquer valor HRESULT de falha.
Comentários
Depois que a conexão for interrompida, os eventos não serão mais roteados para as funções do manipulador listadas no mapa do coletor de eventos.
Observação
Se sua classe derivar de várias classes IDispEventSimpleImpl, você precisará eliminar a ambiguidade das chamadas a esse método fazendo o escopo da chamada com a classe base específica na qual você está interessado.
DispEventAdvise interrompe uma conexão estabelecida com a origem do evento especificada em pdiid.
IDispEventSimpleImpl::GetIDsOfNames
Essa implementação de IDispatch::GetIDsOfNames retorna E_NOTIMPL.
STDMETHOD(GetIDsOfNames)(
REFIID /* riid */,
LPOLESTR* /* rgszNames */,
UINT /* cNames */,
LCID /* lcid */,
DISPID* /* rgdispid */);
Comentários
Confira IDispatch::GetIDsOfNames no SDK do Windows.
IDispEventSimpleImpl::GetTypeInfo
Essa implementação de IDispatch::GetTypeInfo retorna E_NOTIMPL.
STDMETHOD(GetTypeInfo)(
UINT /* itinfo */,
LCID /* lcid */,
ITypeInfo** /* pptinfo */);
Comentários
Confira IDispatch::GetTypeInfo no SDK do Windows.
IDispEventSimpleImpl::GetTypeInfoCount
Essa implementação de IDispatch::GetTypeInfoCount retorna E_NOTIMPL.
STDMETHOD(GetTypeInfoCount)(UINT* /* pctinfo */);
Comentários
Confira IDispatch::GetTypeInfoCount no SDK do Windows.
IDispEventSimpleImpl::Invoke
Essa implementação de IDispatch::Invoke chama os manipuladores de eventos listados no mapa do coletor de eventos.
STDMETHOD(Invoke)(
DISPID dispidMember,
REFIID /* riid */,
LCID lcid,
WORD /* wFlags */,
DISPPARMS* pdispparams,
VARIANT* pvarResult,
EXCEPINFO* /* pexcepinfo */,
UINT* /* puArgErr */);
Comentários
Confira IDispatch::Invoke.
IDispEventSimpleImpl::Unadvise
Interrompe a conexão com a origem do evento representada pelo pUnk.
HRESULT Unadvise(IUnknown* pUnk);
Parâmetros
pUnk
[entrada] Um ponteiro para a interface IUnknown do objeto de origem do evento.
Valor de retorno
S_OK ou qualquer valor HRESULT de falha.
Comentários
Depois que a conexão for interrompida, os eventos não serão mais roteados para as funções do manipulador listadas no mapa do coletor de eventos.
Observação
Se sua classe derivar de várias classes IDispEventSimpleImpl, você precisará eliminar a ambiguidade das chamadas a esse método fazendo o escopo da chamada com a classe base específica na qual você está interessado.
Unadvise interrompe uma conexão estabelecida com a origem do evento padrão especificada em pdiid.
Unavise interrompe uma conexão com a origem do evento padrão, ela obtém o IID da origem do evento padrão do objeto, conforme determinado por AtlGetObjectSourceInterface.
Confira também
Estrutura _ATL_FUNC_INFO
Classe IDispatchImpl
Classe IDispEventImpl
SINK_ENTRY_INFO
Visão geral da aula