Compartilhar via


Classe IDispEventImpl

Essa classe fornece implementações dos métodos IDispatch.

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 = &IID_NULL,
    const GUID* plibid = &GUID_NULL,
    WORD wMajor = 0,
    WORD wMinor = 0,
    class tihclass = CcomTypeInfoHolder>
class ATL_NO_VTABLE IDispEventImpl : public IDispEventSimpleImpl<nID, T, pdiid>

Parâmetros

nID
Um identificador exclusivo do objeto de origem. Quando IDispEventImpl 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 IDispEventImpl.

pdiid
O ponteiro para o IID da dispinterface do evento implementado por essa classe. Essa interface deve ser definida na biblioteca de tipos indicada por plibid, wMajore wMinor.

plibid
Um ponteiro para a biblioteca de tipos que define a interface de expedição apontada por pdiid. Se &GUID_NULL, a biblioteca de tipos será carregada do objeto que fornece os eventos.

wMajor
A versão principal da biblioteca de tipos. O valor padrão é 0.

wMinor
A versão secundária da biblioteca de tipos. O valor padrão é 0.

tihclass
A classe usada para gerenciar as informações de tipo para T. O valor padrão é uma classe de tipo CComTypeInfoHolder; no entanto, você pode substituir esse parâmetro de modelo fornecendo uma classe de um tipo diferente CComTypeInfoHolder.

Membros

Typedefs públicos

Nome Descrição
IDispEventImpl::_tihclass A classe usada para gerenciar as informações do tipo. Por padrão, CComTypeInfoHolder.

Construtores públicos

Nome Descrição
IDispEventImpl::IDispEventImpl O construtor .

Métodos públicos

Nome Descrição
IDispEventImpl::GetFuncInfoFromId Localiza o índice de função para o identificador de expedição especificado.
IDispEventImpl::GetIDsOfNames Mapeia um único membro e um conjunto opcional de nomes de argumento para um conjunto correspondente de inteiros DISPID.
IDispEventImpl::GetTypeInfo Recupera as informações de tipo de um objeto.
IDispEventImpl::GetTypeInfoCount Recupera o número de interfaces de informações do tipo.
IDispEventImpl::GetUserDefinedType Recupera o tipo básico de um tipo definido pelo usuário.

Comentários

IDispEventImpl 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. IDispEventImpl fornece implementações dos métodos IDispatch. Você só precisa fornecer implementações para os eventos nos quais está interessado em manipular.

IDispEventImpl 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 SINK_ENTRY macro ao SINK_ENTRY_EX mapa do coletor de eventos para cada evento em cada objeto que você deseja manipular. Ao usar IDispEventImpl como uma classe base de um controle composto, você pode chamar AtlAdviseSinkMap para estabelecer e interromper a conexão com as fontes de evento para todas as entradas no mapa do coletor de eventos. Em outros casos, ou para um controle maior, 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 IDispEventImpl (usando um valor exclusivo para nID) para cada objeto para o qual você precisa lidar com 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 IDispEventImpl.

IDispEventImpl fornece a mesma funcionalidade IDispEventSimpleImplque, exceto que obtém informações de tipo sobre a interface de uma biblioteca de tipos em vez de tê-la fornecida como um ponteiro para uma _ATL_FUNC_INFO estrutura. 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 e 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 de CE ATL de coletores de eventos 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, consulte Suporte IDispEventImpl.

Hierarquia de herança

_IDispEvent

_IDispEventLocator

IDispEventSimpleImpl

IDispEventImpl

Requisitos

Cabeçalho: atlcom.h

IDispEventImpl::GetFuncInfoFromId

Localiza o índice de função para o identificador de expedição especificado.

HRESULT GetFuncInfoFromId(
    const IID& iid,
    DISPID dispidMember,
    LCID lcid,
    _ATL_FUNC_INFO& info);

Parâmetros

iid
[in] Uma referência à ID da função.

dispidMember
[in] A ID de expedição da função.

lcid
[in] O contexto de localidade da ID da função.

info
[in] A estrutura que indica como a função é chamada.

Valor de retorno

Um valor padrão HRESULT .

IDispEventImpl::GetIDsOfNames

Mapeia um único membro e um conjunto opcional de nomes de argumento para um conjunto correspondente de inteiros DISPID, que pode ser usado em chamadas subsequentes para IDispatch::Invoke.

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

Comentários

Consulte IDispatch::GetIDsOfNames no SDK do Windows.

IDispEventImpl::GetTypeInfo

Recupera as informações do tipo de um objeto, que podem ser usadas para obter informações de tipo para uma interface.

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

IDispEventImpl::GetTypeInfoCount

Retorna o número de interfaces de informações do tipo que um objeto fornece (0 ou 1).

STDMETHOD(GetTypeInfoCount)(UINT* pctinfo);

Comentários

Consulte IDispatch::GetTypeInfoCount no SDK do Windows.

IDispEventImpl::GetUserDefinedType

Recupera o tipo básico de um tipo definido pelo usuário.

VARTYPE GetUserDefinedType(
    ITypeInfo* pTI,
    HREFTYPE hrt);

Parâmetros

pTI
[in] Um ponteiro para a ITypeInfo interface que contém o tipo definido pelo usuário.

hrt
[in] Um identificador para a descrição do tipo a ser recuperada.

Valor de retorno

O tipo de variante.

Comentários

Consulte ITypeInfo::GetRefTypeInfo.

IDispEventImpl::IDispEventImpl

O construtor . Armazena os valores dos parâmetros plibidde modelo de classe, pdiide wMajorwMinor.

IDispEventImpl();

IDispEventImpl::_tihclass

Esse typedef é uma instância do parâmetro tihclassde modelo de classe.

typedef tihclass _tihclass;

Comentários

Por padrão, a classe é CComTypeInfoHolder. CComTypeInfoHolder gerencia as informações de tipo para a classe.

Confira também

Estrutura _ATL_FUNC_INFO
Classe IDispatchImpl
Classe IDispEventSimpleImpl
SINK_ENTRY
SINK_ENTRY_EX
SINK_ENTRY_INFO
Visão geral da aula