3

所以我正在用纯 C 语言编写一个 Win32 程序,它使用 Direct2D 进行绘图。到目前为止,考虑到这是我对 COM 的第一次重大实验,一切都很好。我现在开始使用 DirectWrite 进行字体渲染,但似乎存在障碍。尽管 Direct2D 和大多数其他 COM 对象具有为 C 和 C++ 编写的单独接口,但 DirectWrite 仅在 Windows SDK 标头中具有 C++ 接口。我不知道这是一个疏忽还是有目的的决定,但如果给定适当的 C 友好标头,它似乎应该在 C 中正常工作。我想如果我为 DirectWrite 编写自己的标题,我应该没问题。

所以这让我想到了问题的实质:如何将 C++ 风格的代码用于 COM 接口并将其转换为 C 友好的代码?我自己从未创建过 COM 接口,所以我不知道如何为它编写自己的 DirectWrite 标头。我尝试并排查看 Direct2D 的 C 和 C++ 接口标头以进行比较,但我有点难以理解。谢谢各位!

4

1 回答 1

2

有一篇完美的文章解释了如何用纯 C 实现你自己的 COM 类

http://www.codeproject.com/Articles/13601/COM-in-plain-C

那么“Inside COM”一书(Dale Rogerson,Microsoft Corp. 出版:ISBN:1-57231-349-8)是所有 COM 黑魔法的绝妙参考。

基本上,自从您使用 Direct2D 以来,您至少已经完成了一半。DirectX 和其他 COM 标头是自动生成的,因此要使用 DirectWrite,您可能只需弄清楚您需要哪些确切的接口和方法,然后手动或使用一些简单的解析器/生成器编写它们。

于 2012-05-03T23:43:36.640 回答