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。