- ベストアンサー
DirectPlay8Peer の初期化ができません
- DirectPlay8の初期化方法について困っています。
- 使用するヘッダーファイルはDplay8.h、Wtypes.h、Objbase.hです。
- COMオブジェクトの使用方法がわからず、DirectXのサンプルも理解できません。助けてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
初期化というか、hr が FAILED になるのは何を呼び出した時でしょうか? その時の hr の値から判断するしかありません。 あとは、サンプルから削ったものを地道に調べる。 CoInitializeEx を呼び出すのを忘れていたりする事があります。
その他の回答 (1)
>hrの初期化ですが,CoInitializeExとCoInitializeとの違いは何なんでしょうか. あまり正確には知らないのですが、CoInitialize は COM で、CoInitializeEx は DCOM という事でしょうか。 ローカルな特性としては、CoInitialize は、CoInitializeEx(NULL, COINIT_APARTMENTTHREADED) と同じだと思います。 COINIT_MULTITHREADED は全てのスレッドから無制限にアクセスできるようになって、COINIT_APARTMENTTHREADED はインスタンスを作成したスレッドだけが、そのインスタンスのメソッドを実行できるようにして、速度を稼いでいるものだと思います。 >コンパイルエラーがでてしまうんです. objbase.h をインクルードした時点で _WIN32_DCOM が定義されていないとエラーになります。 サンプルのプロジェクトを見てもらえばわかるのですが、通常は、 プロジェクト → 設定 → C/C++タブのプリプロセッサ定義の中に追加します。
お礼
ありがとうございます. すごく参考になりました! objbase.hをインクルードするだけではだめなんですね. CoInitializeExを使用することは断念したんですけど, 同じことができるのならば CoInitializeを突き通します! ありがとうございました!
お礼
返答ありがとうございます. 初期化をするのを忘れていたようです. hrの初期化ですが,CoInitializeExとCoInitializeとの違いは何なんでしょうか. CoInitializeでは初期化ができるのですが,CoInitializeExでは コンパイルエラーがでてしまうんです.