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
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