所以我在普通的C中编写Win32程序,它使用Direct2D进行绘图。到目前为止,考虑到这是我第一次使用COM进行的主要实验,一切都很顺利。我现在正在使用DirectWrite进行字体渲染,但似乎存在障碍。虽然Direct2D和大多数其他COM对象具有为C和C ++编写的单独接口,但DirectWrite在Windows SDK标头中仅具有C ++接口。我不知道这是一个疏忽或有目的的决定,但如果给出适当的C友好标题,它似乎应该在C中正常工作。我想如果我为DirectWrite编写自己的标题,我应该没问题。
所以这让我想到了问题:如何为COM接口提供C ++风格的代码并将其转换为C友好代码?我自己从未创建过COM接口,因此我不知道如何编写自己的DirectWrite标头。我尝试并排查看Direct2D的C和C ++接口头文件进行比较,但是我有点难以理解。谢谢大家!
答案 0 :(得分:2)
有一篇完美的文章解释了如何在普通C中实现自己的COM类
http://www.codeproject.com/Articles/13601/COM-in-plain-C
然后,“Inside COM”一书(Dale Rogerson,微软公司出版:ISBN:1-57231-349-8)是所有COM黑魔法的精彩参考。
基本上,自从你使用Direct2D以来,你至少有一半的时间。 DirectX和其他COM头是自动生成的,因此要使用DirectWrite,您可能只需要找出所需的确切接口和方法,并手动或使用一些简单的解析器/生成器来编写它们。