【问题标题】:ATL templates for IDispatch derived classesIDispatch 派生类的 ATL 模板
【发布时间】:2011-06-25 03:41:00
【问题描述】:

我计划明天做一些 IDispatch 相关的工作,我必须创建一个支持这个接口的类。

我一直在使用 ATL 类来创建 COM 对象和管理 COM 指针,所以我也想在我的类中使用它们。但是到目前为止的研究以及与同事的讨论让我相信,即使我想创建一个具有一个属性或方法的简单类,我也需要所有重量级的 IDL 东西。

如果是这样的话,我可能会求助于从头开始编写所有内容,但我仍然希望我遗漏了一些东西。有没有我错过的模板?

【问题讨论】:

  • 有IDispatchImpl。不过,我不知道它有多大帮助。
  • 它需要那些 IID 和 LIBID,我不需要或不需要这些 IID 和 LIBID。不过谢谢。
  • 您总是需要为每个接口使用IID,但如果您不需要LIBID,则不必指定它。 IDispatchImpl 将在内部使用默认值。
  • 如果您只是将 IDispatch 传递给另一台服务器以进行回调,该怎么办?例如,它需要指针,调用获取名称的 ID,或者只是简单地调用 method0?

标签: c++ com atl


【解决方案1】:

ATL 有一个 IDispatchImpl 类。

【讨论】:

  • +1,但是这个类使用 typelib。 OP 可能会反对,但 IMO 从一开始就使用 IDL 并嵌入类型库让生活更轻松。
  • IDispatchImpl 的默认行为是使用 TypeLib,但它不直接访问 TypeLib。您可以使用tihclass 参数来提供一个绕过该行为的虚拟类。否则,直接从IDispatch 派生并手动实现其方法。他们中的许多人可以直接返回E_NOTIMPL。
猜你喜欢
  • 2016-02-17
  • 2015-04-10
  • 1970-01-01
  • 1970-01-01
  • 2019-11-09
  • 1970-01-01
  • 2018-01-22
  • 2021-11-16
  • 2018-03-30
相关资源
最近更新 更多