Share via


实现双接口

可以使用 IDispatchImpl 类实现双接口,该类提供双接口中 IDispatch 方法的默认实现。 有关更多信息,请参见 Implementing the IDispatch Interface

使用此类:

  • 在类型库中定义双接口。

  • IDispatchImpl 的专用化派生类(将接口和类型库相关信息作为模板参数传递)。

  • 将一个(多个)条目添加到 COM 映射,以通过 QueryInterface 公开双接口。

  • 在类中实现接口的 vtable 部分。

  • 确保包含接口定义的类型库在运行时可用于对象。

ATL 简单对象向导

如果要创建新接口和新类来实现此接口,可以使用“ATL 添加类”对话框,然后使用 ATL 简单对象向导

实现接口向导

如果有现有接口,可以使用“实现接口向导”将必要的基类、COM 映射项和框架方法实现添加到现有类。

注意

可能需要调整生成的基类,以便将类型库的主版本号和次要版本号作为模板参数传递给 IDispatchImpl 基类。 “实现接口向导”不会检查类型库版本号。

实现 IDispatch

只要有描述相应双接口的类型库,就可以(使用 COM_INTERFACE_ENTRY2COM_INTERFACE_ENTRY_IID 宏)指定 COM 映射中的相应条目,即可使用 IDispatchImpl 基类提供反接口的实现。 例如,以这种方式实现 IDispatch 接口是很常见的。 ATL 简单对象向导和实现接口向导都假定你打算以这种方式实现 IDispatch,因此它们会将相应的条目添加到映射中。

注意

ATL 提供 IDispEventImplIDispEventSimpleImpl 类来帮助实现 dispinterface,而不需要包含兼容的双接口定义的类型库。

另请参阅

双重接口和 ATL