Compartilhar via


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