Compartilhar via


Classe IDispatchImpl

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

Importante

Essa classe e os respectivos membros não podem ser usados em aplicativos executados 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
[in] Uma interface dupla.

piid
[in] Um ponteiro para o IID de T.

plibid
[in] Um ponteiro para a LIBID da biblioteca de tipos que contém as informações sobre a interface. Por padrão, a biblioteca de tipos no nível do servidor é passada.

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

wMinor
[in] A versão secundária da biblioteca de tipos. Por padrão, o valor é 0.

tihclass
[in] A classe usada para gerenciar as informações de tipo para T. Por padrão, o valor é CComTypeInfoHolder.

Membros

Construtores públicos

Nome Descrição
IDispatchImpl::IDispatchImpl O construtor . Chama AddRef na variável de membro protegida que gerencia as informações de tipo para a interface dupla. O destruidor chama Release.

Métodos públicos

Nome Descrição
IDispatchImpl::GetIDsOfNames Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de expedição.
IDispatchImpl::GetTypeInfo Recupera as informações de tipo para a interface dupla.
IDispatchImpl::GetTypeInfoCount Determina se há informações de tipo disponíveis para a interface dupla.
IDispatchImpl::Invoke Fornece acesso aos métodos e propriedades expostos pela interface dupla.

Comentários

IDispatchImpl fornece uma implementação padrão para a parte IDispatch de qualquer interface dupla em um objeto. Uma interface dupla deriva de IDispatch e usa apenas tipos compatíveis com automação. Como um dispinterface, uma interface dupla dá suporte para associação antecipada e associação tardia, no entanto, uma interface dupla também dá suporte para associação vtable.

O exemplo a seguir 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 padrão, a classe IDispatchImpl pesquisa as informações de tipo para T no registro. Para implementar uma interface não registrada, é possível usar a classe IDispatchImpl sem acessar o registro usando um número de versão predefinido. Se você criar um objeto IDispatchImpl que tenha 0xFFFF como o valor para wMajor e 0xFFFF como o valor para wMinor, a classe IDispatchImpl recuperará a biblioteca de tipos do arquivo .dll, em vez do registro.

IDispatchImpl contém um membro estático do tipo CComTypeInfoHolder que gerencia as informações de tipo para a interface dupla. Se houver vários objetos que implementam a mesma interface dupla, será utilizada apenas uma instância de CComTypeInfoHolder.

Hierarquia de herança

T

IDispatchImpl

Requisitos

Cabeçalho: atlcom.h

IDispatchImpl::GetIDsOfNames

Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de expedição.

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

Comentários

Confira IDispatch::GetIDsOfNames no SDK do Windows.

IDispatchImpl::GetTypeInfo

Recupera as informações de tipo para a interface dupla.

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

Comentários

Confira IDispatch::GetTypeInfo no SDK do Windows.

IDispatchImpl::GetTypeInfoCount

Determina se há informações de tipo disponíveis para a interface dupla.

STDMETHOD(GetTypeInfoCount)(UINT* pctinfo);

Comentários

Consulte IDispatch::GetTypeInfoCount no SDK do Windows.

IDispatchImpl::IDispatchImpl

O construtor . Chama AddRef na variável de membro protegida que gerencia as informações de tipo para a interface dupla. O destruidor chama Release.

IDispatchImpl();

IDispatchImpl::Invoke

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

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

Comentários

Consulte IDispatch::Invoke no SDK do Windows.

Confira também

Visão geral da aula