Compartilhar via


IDispEventImpl Class

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 precisa ser definida na biblioteca de tipos denotada 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 origina 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 de 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 argumentos para um conjunto correspondente de DISPIDs inteiros.
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 macro SINK_ENTRY ou SINK_ENTRY_EX ao 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 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 IDispEventImpl.

IDispEventImpl fornece a mesma funcionalidade que IDispEventSimpleImpl, no entanto, ele 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 estrutura _ATL_FUNC_INFO. 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 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

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 HRESULT padrão.

IDispEventImpl::GetIDsOfNames

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

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

Comentários

Confira 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);

Comentários

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

Confira 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 interface ITypeInfo 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

Confira ITypeInfo::GetRefTypeInfo.

IDispEventImpl::IDispEventImpl

O construtor . Armazena os valores dos parâmetros de modelo de classe plibid, pdiid, wMajore wMinor.

IDispEventImpl();

IDispEventImpl::tihclass

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

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