模块 2. 在Windows-Based程序中使用 COM

本系列的模块 1 展示了如何创建窗口并响应窗口消息,例如WM_PAINTWM_CLOSE。 模块 2 介绍了组件对象模型 (COM) 。

COM 是用于创建可重用软件组件的规范。 你将在基于 Windows 的新式程序中使用的许多功能都依赖于 COM,如下所示:

  • 图形 (Direct2D)
  • 文本 (DirectWrite)
  • The Windows Shell
  • 功能区控件
  • UI 动画

(此列表中的某些技术使用 COM 的子集,因此不是“纯”COM.)

COM 以难以学习而闻名。 编写支持 COM 的新软件模块确实很棘手。 但是,如果你的程序严格意义上是 COM 的 使用者 ,你可能会发现 COM 比预期更容易理解。

本模块演示如何在程序中调用基于 COM 的 API。 它还介绍了 COM 设计背后的一些原因。 如果你了解 COM 设计原样的原因,则可以更有效地使用它进行编程。 本模块的第二部分介绍了 COM 的一些建议编程做法。

COM 于 1993 年引入,支持对象链接和嵌入 (OLE) 2.0。 人员有时认为 COM 和 OLE 是同一回事。 这可能是认为 COM 难以学习的另一个原因。 OLE 2.0 是基于 COM 构建的,但你不必知道 OLE 就可以理解 COM。

COM 是 二进制标准,而不是语言标准:它定义应用程序和软件组件之间的二进制接口。 作为二进制标准,COM 是中性语言的,尽管它自然映射到某些 C++ 构造。 本模块将重点介绍 COM 的三个主要目标:

  • 将 对象的实现与其接口分开。
  • 管理对象的生存期。
  • 在运行时发现对象的功能。

在本节中

了解如何使用 C++ 为 Windows 编程