Classe IDispEventSimpleImpl
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.cc
deve 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