Partilhar via


Classe IDispEventSimpleImpl

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 implementações dos IDispatch métodos, sem obter informação de tipos de uma biblioteca de tipos.

Importante

Essa classe e seus membros não podem ser usados em aplicativos executados no Tempo de Execução do Windows.

Sintaxe

template <UINT nID, class T, const IID* pdiid>
class ATL_NO_VTABLE IDispEventSimpleImpl : public _IDispEventLocator<nID, pdiid>

Parâmetros

nID
Um identificador único para o objeto de origem. Quando IDispEventSimpleImpl é a classe base para um controlo composto, use o ID de recurso do controlo contido desejado para este parâmetro. Noutros casos, utilize-se um inteiro positivo arbitrário.

T
A classe do utilizador, que deriva de IDispEventSimpleImpl.

pdiid
O apontador para o IID da disinterface de eventos implementada por esta classe.

Membros

Métodos Públicos

Nome Description
IDispEventSimpleImpl::Aconselhar Estabelece uma ligação com a fonte de eventos padrão.
IDispEventSimpleImpl::DispEventAdvise Estabelece uma ligação com a fonte do evento.
IDispEventSimpleImpl::DispEventUnadvise Quebra a ligação com a fonte do evento.
IDispEventSimpleImpl::GetIDsOfNames Devolve E_NOTIMPL.
IDispEventSimpleImpl::GetTypeInfo Devolve E_NOTIMPL.
IDispEventSimpleImpl::GetTypeInfoCount Devolve E_NOTIMPL.
IDispEventSimpleImpl::Invoke Chama os gestores de eventos listados no event sink map.
IDispEventSimpleImpl::Unadvise Quebra a ligação com a fonte de eventos padrão.

Observações

IDispEventSimpleImpl fornece uma forma de implementar uma disinterface de eventos sem exigir que forneça código de implementação para cada método/evento nessa interface. IDispEventSimpleImpl fornece implementações dos IDispatch métodos. Só precisa de fornecer implementações para os eventos que lhe interessa gerir.

IDispEventSimpleImpl Funciona em conjunto com o event sink map na tua classe para encaminhar eventos para a função handler apropriada. Para usar esta classe:

  • Adiciona uma macro de SINK_ENTRY_INFO ao mapa do dissipador de eventos para cada evento em cada objeto que queiras gerir.

  • Forneça informação de tipo para cada evento passando um ponteiro para uma estrutura _ATL_FUNC_INFO como parâmetro para cada entrada. Na plataforma x86, o _ATL_FUNC_INFO.cc valor deve ser CC_CDECL com o método de chamada da função de callback de __stdcall.

  • Chame DispEventAdvise para estabelecer a ligação entre o objeto de origem e a classe base.

  • Liga para o DispEventUnadvise para cortar a ligação.

Deve derivar de IDispEventSimpleImpl (usando um valor único para nID) para cada objeto para o qual precisa de gerir eventos. Pode reutilizar a classe base desaconselhando contra um objeto fonte e depois aconselhando contra outro objeto-fonte, mas o número máximo de objetos fonte que pode ser tratado por um único objeto de cada vez é limitado pelo número de IDispEventSimpleImpl classes base.

IDispEventSimplImpl fornece a mesma funcionalidade que o IDispEventImpl, exceto que não obtém informação de tipo sobre a interface a partir de uma biblioteca de tipos. Os assistentes geram código apenas com base em IDispEventImpl, mas podes usar IDispEventSimpleImpl adicionando o código manualmente. IDispEventSimpleImpl Use quando não tiver uma biblioteca de tipos que descreva a interface de eventos ou quiser evitar a sobrecarga associada à utilização da biblioteca de tipos.

Observação

IDispEventImpl e IDispEventSimpleImpl fornecer a sua própria implementação permitindo IUnknown::QueryInterface que cada IDispEventImpl classe base IDispEventSimpleImpl atue como uma identidade COM separada, permitindo ainda assim acesso direto aos membros da classe no seu objeto COM principal.

A implementação CE ATL dos sinks de eventos ActiveX só suporta valores de retorno do tipo HRESULT ou void dos seus métodos de handler de eventos; qualquer outro valor de retorno não é suportado e o seu comportamento é indefinido.

Para mais informações, veja Apoiar IDispEventImpl.

Hierarquia de herança

_IDispEvent

_IDispEventLocator

IDispEventSimpleImpl

Requerimentos

Cabeçalho: atlcom.h

IDispEventSimpleImpl::Aconselhar

Chame este método para estabelecer uma ligação com a fonte do evento representada por pUnk.

HRESULT Advise(IUnknown* pUnk);

Parâmetros

pUnk
[dentro] Um ponteiro para a IUnknown interface do objeto fonte de eventos.

Valor de retorno

S_OK ou qualquer valor HRESULT de falha.

Observações

Uma vez estabelecida a ligação, os eventos disparados a partir do pUnk serão encaminhados para os handlers da sua classe através do event sink map.

Observação

Se a sua classe deriva de várias IDispEventSimpleImpl classes, terá de desambiguar chamadas a este método ao definir o âmbito da chamada com a classe base específica que lhe interessa.

Advise estabelece uma ligação com a fonte de eventos padrão, recebe o IID da fonte de evento padrão do objeto, conforme determinado pelo AtlGetObjectSourceInterface.

IDispEventSimpleImpl::D ispEventAdvise

Chame este método para estabelecer uma ligação com a fonte do evento representada por pUnk.

HRESULT DispEventAdvise(IUnknown* pUnk  const IID* piid);

Parâmetros

pUnk
[dentro] Um ponteiro para a IUnknown interface do objeto fonte de eventos.

Piid
Um apontador para o IID do objeto fonte de eventos.

Valor de retorno

S_OK ou qualquer valor HRESULT de falha.

Observações

Subsequentemente, os eventos disparados a partir do pUnk serão encaminhados para os handlers da sua classe através do mapa de sumidouros de eventos.

Observação

Se a sua classe deriva de várias IDispEventSimpleImpl classes, terá de desambiguar chamadas a este método ao definir o âmbito da chamada com a classe base específica que lhe interessa.

DispEventAdvise estabelece uma ligação com a fonte de eventos especificada em pdiid.

IDispEventSimpleImpl::D ispEventUnadvise

Quebra a ligação com a fonte do evento representada por pUnk.

HRESULT DispEventUnadvise(IUnknown* pUnk  const IID* piid);

Parâmetros

pUnk
[dentro] Um ponteiro para a IUnknown interface do objeto fonte de eventos.

Piid
Um apontador para o IID do objeto fonte de eventos.

Valor de retorno

S_OK ou qualquer valor HRESULT de falha.

Observações

Uma vez que a ligação seja quebrada, os eventos deixarão de ser encaminhados para as funções handler listadas no event sink map.

Observação

Se a sua classe deriva de várias IDispEventSimpleImpl classes, terá de desambiguar chamadas a este método ao definir o âmbito da chamada com a classe base específica que lhe interessa.

DispEventAdvise quebra uma ligação que foi estabelecida com a fonte do evento especificada em pdiid.

IDispEventSimpleImpl::GetIDsOfNames

Esta implementação de IDispatch::GetIDsOfNames retornos E_NOTIMPL.

STDMETHOD(GetIDsOfNames)(
    REFIID /* riid */,
    LPOLESTR* /* rgszNames */,
    UINT /* cNames */,
    LCID /* lcid */,
    DISPID* /* rgdispid */);

Observações

Veja IDispatch::GetIDsOfNames no SDK do Windows.

IDispEventSimpleImpl::GetTypeInfo

Esta implementação de IDispatch::GetTypeInfo retornos E_NOTIMPL.

STDMETHOD(GetTypeInfo)(
    UINT /* itinfo */,
    LCID /* lcid */,
    ITypeInfo** /* pptinfo */);

Observações

Veja IDispatch::GetTypeInfo no SDK do Windows.

IDispEventSimpleImpl::GetTypeInfoCount

Esta implementação de IDispatch::GetTypeInfoCount retornos E_NOTIMPL.

STDMETHOD(GetTypeInfoCount)(UINT* /* pctinfo */);

Observações

Veja IDispatch::GetTypeInfoCount no SDK do Windows.

IDispEventSimpleImpl::Invoke

Esta implementação IDispatch::Invoke chama os gestores de eventos listados no event sink map.

STDMETHOD(Invoke)(
    DISPID dispidMember,
    REFIID /* riid */,
    LCID lcid,
    WORD /* wFlags */,
    DISPPARMS* pdispparams,
    VARIANT* pvarResult,
    EXCEPINFO* /* pexcepinfo */,
    UINT* /* puArgErr */);

Observações

Veja IDispatch::Invoke.

IDispEventSimpleImpl::Unadvise

Quebra a ligação com a fonte do evento representada por pUnk.

HRESULT Unadvise(IUnknown* pUnk);

Parâmetros

pUnk
[dentro] Um ponteiro para a IUnknown interface do objeto fonte de eventos.

Valor de retorno

S_OK ou qualquer valor HRESULT de falha.

Observações

Uma vez que a ligação seja quebrada, os eventos deixarão de ser encaminhados para as funções handler listadas no event sink map.

Observação

Se a sua classe deriva de várias IDispEventSimpleImpl classes, terá de desambiguar chamadas a este método ao definir o âmbito da chamada com a classe base específica que lhe interessa.

Unadvise quebra uma ligação que foi estabelecida com a fonte de eventos padrão especificada em pdiid.

Unavise se quebra uma ligação com a fonte de eventos predefinida, recebe o IID da fonte de evento padrão do objeto, conforme determinado pelo AtlGetObjectSourceInterface.

Consulte também

_ATL_FUNC_INFO Estrutura
Classe IDispatchImpl
Classe IDispEventImpl
SINK_ENTRY_INFO
Visão geral da classe