模块 2. 在Windows-Based程序中使用 COM
本系列的模块 1 展示了如何创建窗口并响应窗口消息,例如WM_PAINT和WM_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 的三个主要目标:
- 将 对象的实现与其接口分开。
- 管理对象的生存期。
- 在运行时发现对象的功能。
在本节中
- 什么是 COM 接口?
- 初始化 COM 库
- COM 中的错误代码
- 在 COM 中创建对象
- 示例:“打开”对话框
- 管理对象的生存期
- 请求对象获取接口
- COM 中的内存分配
- COM 编码做法
- COM 中的错误处理
相关主题