2012-05-03 5 views
2

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

これは私に質問の肉体をもたらします.1つはCOMインターフェイスのC++スタイルのコードをCフレンドリーなコードに変換する方法ですか?私は自分自身でCOMインターフェイスを作成したことはないので、自分のDirectWriteヘッダーを書き込む方法はわかりません。私は、比較のためにDirect2DのCおよびC++インターフェイスヘッダーを調べてみましたが、頭を包むのは少し難しいです。ありがとうございました!

+2

マイクロソフトでは、Windows APIがC++でなくC++ではないことを何年も前に決めました。また、Direct2DもDirectWriteも、実際のCOM APIの唯一のCOMのようなものではありません。 – Lothar

答えて

2

平野Cで独自のCOMクラスを実装する方法を説明し、完璧な記事があります

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

そして、書籍「インサイドCOM」(デール・ロジャーソン、マイクロソフト社の出版物:ISBN:1から57231 -349-8)は、すべてのCOM黒魔術の素晴らしい参考資料です。

基本的には、Direct2Dを使用しているので、少なくとも半分の方法があります。 DirectXと他のCOMヘッダーは自動生成されますのでDirectWriteを使用するには、必要なインターフェイスとメソッドを手に入れたり、簡単なパーサ/ジェネレータを使って記述してください。