3

だから私はプレーンCでWin32プログラムを書いていて、それは描画にDirect2Dを使用しています。これまでのところ、これがCOMを使った最初の主要な実験であることを考えると、すべてがうまくいきました。フォントレンダリングにDirectWriteを使用するようになりましたが、障害があるようです。Direct2Dと他のほとんどのCOMオブジェクトには、CとC ++用に記述された個別のインターフェイスがありますが、DirectWriteにはWindowsSDKヘッダーにC++インターフェイスしかありません。これが見落としなのか意図的な決定なのかはわかりませんが、適切なCフレンドリーなヘッダーが与えられれば、Cでは問題なく機能するはずです。DirectWrite用に独自のヘッダーを作成すれば、問題ないはずです。

それで、これは私に質問の本質に私を連れて行きます:COMインターフェースのためにC ++スタイルのコードを取り、それを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 に答える