IDispatchImpl 类

为双接口的 IDispatch 部分提供默认实现。

重要

无法在 Windows 运行时中执行的应用程序中使用此类及其成员。

语法

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

参数

T
[in] 双重接口。

piid
[in] 指向 T 的 IID 的指针。

plibid
[in] 指向包含接口信息的类型库的 LIBID 的指针。 默认情况下,传递服务器级类型库。

wMajor
[in] 类型库的主版本。 该值默认为 1。

wMinor
[in] 类型库的次版本。 该值默认为 0。

tihclass
[in] 用于管理 T 的类型信息的类。默认值为 CComTypeInfoHolder

成员

公共构造函数

名称 描述
IDispatchImpl::IDispatchImpl 构造函数。 对管理双接口类型信息的受保护成员变量调用 AddRef。 析构函数调用 Release

公共方法

名称 描述
IDispatchImpl::GetIDsOfNames 将一组名称映射为对应的一组调度标识符。
IDispatchImpl::GetTypeInfo 检索双接口的类型信息。
IDispatchImpl::GetTypeInfoCount 确定是否有可用于双接口的类型信息。
IDispatchImpl::Invoke 提供对双接口公开的方法和属性的访问权限。

备注

IDispatchImpl 为对象上任何双接口的 IDispatch 部分提供默认实现。 双重接口派生自 IDispatch 并且仅使用与自动化兼容的类型。 与调度接口一样,双接口支持早期绑定和后期绑定;但是,双接口也支持 vtable 绑定。

下面的示例演示 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>

默认情况下,IDispatchImpl 类在注册表中查找 T 的类型信息。 要实现未注册的接口,你可以使用 IDispatchImpl 类,而无需使用预定义的版本号访问注册表。 如果你创建一个 IDispatchImpl 对象,其中 wMajor 的值为 0xFFFF,wMinor 的值为 0xFFFF,则该类将从 .dll 文件而不是注册表中检索类型库。IDispatchImpl

IDispatchImpl 包含一个类型为 CComTypeInfoHolder 的静态成员,用于管理双接口的类型信息。 如果你有多个实现相同双接口的对象,则只使用一个 CComTypeInfoHolder 实例。

继承层次结构

T

IDispatchImpl

要求

标头:atlcom.h

IDispatchImpl::GetIDsOfNames

将一组名称映射为对应的一组调度标识符。

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

备注

请参阅 Windows SDK 中的 IDispatch::GetIDsOfNames

IDispatchImpl::GetTypeInfo

检索双接口的类型信息。

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

备注

请参阅 Windows SDK 中的 IDispatch::GetTypeInfo

IDispatchImpl::GetTypeInfoCount

确定是否有可用于双接口的类型信息。

STDMETHOD(GetTypeInfoCount)(UINT* pctinfo);

注解

请参阅 Windows SDK 中的IDispatch::GetTypeInfoCount

IDispatchImpl::IDispatchImpl

构造函数。 对管理双接口类型信息的受保护成员变量调用 AddRef。 析构函数调用 Release

IDispatchImpl();

IDispatchImpl::Invoke

提供对双接口公开的方法和属性的访问权限。

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

注解

请参阅 Windows SDK 中的 IDispatch::Invoke

另请参阅

类概述