Partilhar via


Classe IDispatchImpl

Observação

A Active Template Library (ATL) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.

Fornece uma implementação padrão para a IDispatch parte de uma interface dual.

Importante

Esta classe e os seus membros não podem ser usados em aplicações que sejam executadas no Windows Runtime.

Sintaxe

template<class T,
        const IID* piid= &__uuidof(T),
        const GUID* plibid = &CAtlModule::m_libid,
        WORD wMajor = 1,
        WORD wMinor = 0,
        class tihclass = CComTypeInfoHolder>
class ATL_NO_VTABLE IDispatchImpl : public T

Parâmetros

T
[dentro] Uma interface dupla.

Piid
[dentro] Um apontador para o IID de T.

plibid
[dentro] Um ponteiro para o LIBID da biblioteca de tipos que contém informação sobre a interface. Por defeito, a biblioteca de tipos ao nível do servidor é passada.

wMajor
[dentro] A versão principal da biblioteca de tipos. Por defeito, o valor é 1.

wMinor
[dentro] A versão menor da biblioteca de tipos. Por defeito, o valor é 0.

tihclass
[dentro] A classe utilizada para gerir a informação de tipo para T. Por defeito, o valor é CComTypeInfoHolder.

Membros

Construtores Públicos

Nome Description
IDispatchImpl::IDispatchImpl O construtor. Chamadas AddRef à variável membro protegida que gere a informação de tipo para a interface dual. O destruidor chama Release.

Métodos Públicos

Nome Description
IDispatchImpl::ObtémIdOfNomes Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de despacho.
IDispatchImpl::ObtendãoTipoInformação Recupera a informação do tipo para a interface dual.
IDispatchImpl::GetTypeInfoCount Determina se existe informação de tipo disponível para a interface dual.
IDispatchImpl::Invoke Fornece acesso aos métodos e propriedades expostos pela interface dual.

Observações

IDispatchImpl fornece uma implementação padrão para a IDispatch parte de qualquer interface dual num objeto. Uma interface dupla deriva e IDispatch utiliza apenas tipos compatíveis com Automação. Tal como uma disinterface, uma interface dual suporta ligação precoce e ligação tardia; No entanto, uma interface dupla também suporta ligação Vtable.

O exemplo seguinte mostra uma implementação típica de IDispatchImpl.

class ATL_NO_VTABLE CBeeper :
   public CComObjectRootEx<CComSingleThreadModel>,
   public CComCoClass<CBeeper, &CLSID_Beeper>,
   public IDispatchImpl<IBeeper, &IID_IBeeper, &LIBID_NVC_ATL_COMLib, /*wMajor =*/ 1, /*wMinor =*/ 0>

Por defeito, a IDispatchImpl classe procura a informação do tipo T no registo. Para implementar uma interface não registada, pode usar a IDispatchImpl classe sem aceder ao registo usando um número de versão pré-definido. Se criares um IDispatchImpl objeto que tenha 0xFFFF como valor para wMajor e 0xFFFF como valor para wMinor, a IDispatchImpl classe recupera a biblioteca de tipos do ficheiro .dll em vez do registo.

IDispatchImpl contém um membro estático do tipo CComTypeInfoHolder que gere a informação do tipo para a interface dual. Se tiveres vários objetos que implementam a mesma interface dual, apenas uma instância de CComTypeInfoHolder é usada.

Hierarquia de herança

T

IDispatchImpl

Requerimentos

Cabeçalho: atlcom.h

IDispatchImpl::ObtémIdOfNomes

Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de despacho.

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

Observações

Veja IDispatch::GetIDsOfNames no SDK do Windows.

IDispatchImpl::ObtendãoTipoInformação

Recupera a informação do tipo para a interface dual.

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

Observações

Veja IDispatch::GetTypeInfo no SDK do Windows.

IDispatchImpl::GetTypeInfoCount

Determina se existe informação de tipo disponível para a interface dual.

STDMETHOD(GetTypeInfoCount)(UINT* pctinfo);

Observações

Veja IDispatch::GetTypeInfoCount no SDK do Windows.

IDispatchImpl::IDispatchImpl

O construtor. Chamadas AddRef à variável membro protegida que gere a informação de tipo para a interface dual. O destruidor chama Release.

IDispatchImpl();

IDispatchImpl::Invoke

Fornece acesso aos métodos e propriedades expostos pela interface dual.

STDMETHOD(Invoke)(
    DISPID dispidMember,
    REFIID riid,
    LCID lcid,
    WORD wFlags,
    DISPPARAMS* pdispparams,
    VARIANT* pvarResult,
    EXCEPINFO* pexcepinfo,
    UINT* puArgErr);

Observações

Veja IDispatch::Invoke no SDK do Windows.

Consulte também

Visão geral da classe