Partilhar via


IDispEventImpl Classe

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

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 = &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 para o objeto de origem. Quando IDispEventImpl é a classe base para um controle composto, use a ID de recurso do controle contido desejado para esse parâmetro. Em outros casos, use um inteiro positivo arbitrário.

T
A classe do usuário, que é derivada de IDispEventImpl.

pdiid
O ponteiro para o IID do evento dispinterface implementado por esta 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 despacho apontada pelo pdiid. Se &GUID_NULL, a biblioteca de tipos será carregada a partir 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 de 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 despacho especificado.
IDispEventImpl::GetIDsOfNames Mapeia um único membro e um conjunto opcional de nomes de argumentos 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 de tipo.
IDispEventImpl::GetUserDefinedType Recupera o tipo básico de um tipo definido pelo usuário.

Observações

IDispEventImpl fornece uma maneira de implementar um dispinterface de evento sem exigir que você forneça código de implementação para cada método/evento nessa interface. IDispEventImpl fornece implementações dos IDispatch métodos. Você só precisa fornecer implementações para os eventos que você 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 ou SINK_ENTRY macro 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 quebrar a conexão com as fontes de eventos para todas as entradas no mapa do coletor de eventos. Em outros casos, ou para maior controle, chame DispEventAdvise para estabelecer a conexão entre o objeto de origem e a classe base. Ligue DispEventUnadvise para quebrar 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 desaconselhando contra um objeto de origem e, em seguida, aconselhando contra um objeto de origem diferente, 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 IDispEventSimpleImplo , exceto que obtém informações de tipo sobre a interface de uma biblioteca de tipos, em vez de fornecê-las como um ponteiro para uma _ATL_FUNC_INFO estrutura. Use IDispEventSimpleImpl quando você não tiver uma biblioteca de tipos descrevendo a interface de eventos ou quiser evitar a sobrecarga associada ao uso da biblioteca de tipos.

Observação

IDispEventImple IDispEventSimpleImpl fornecer sua própria implementação para permitir que cada IUnknown::QueryInterface classe base atue IDispEventImpl como uma identidade COM separada, ao mesmo tempo em que permite acesso direto aos membros da IDispEventSimpleImpl classe em seu objeto COM principal.

A implementação do CE ATL de coletores de eventos ActiveX suporta apenas valores de retorno do tipo HRESULT ou void de seus métodos de manipulador de eventos, qualquer outro valor de retorno não é suportado e seu comportamento é indefinido.

Para obter mais informações, consulte Suporte IDispEventImpl.

Hierarquia de herança

_IDispEvent

_IDispEventLocator

IDispEventSimpleImpl

IDispEventImpl

Requerimentos

Cabeçalho:atlcom.h

IDispEventImpl::GetFuncInfoFromId

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

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

Parâmetros

iid
[em] Uma referência ao ID da função.

dispidMember
[em] O ID de despacho da função.

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

info
[em] 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 argumentos para um conjunto correspondente de inteiros DISPID, que podem ser usados em chamadas subsequentes para IDispatch::Invoke.

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

Observações

Consulte IDispatch::GetIDsOfNames no SDK do Windows.

IDispEventImpl::GetTypeInfo

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

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

IDispEventImpl::GetTypeInfoCount

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

STDMETHOD(GetTypeInfoCount)(UINT* pctinfo);

Observações

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
[em] Um ponteiro para a ITypeInfo interface que contém o tipo definido pelo usuário.

hrt
[em] Um identificador para a descrição do tipo a ser recuperado.

Valor de retorno

O tipo de variante.

Observações

Consulte ITypeInfo::GetRefTypeInfo.

IDispEventImpl::IDispEventImpl

O construtor. Armazena os valores dos parâmetros plibiddo modelo de classe , , pdiidwMajore wMinor.

IDispEventImpl();

IDispEventImpl::_tihclass

Este typedef é uma instância do parâmetro tihclassclass template .

typedef tihclass _tihclass;

Observações

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

Ver também

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