私は、いくつかの COM インターフェイスを持つ API に取り組んでいます。問題は、API がその API をロードするプロジェクトによって実装されなければならないインターフェイスを介して通信することです。したがって、API を使用する場合は、API をプロジェクトにロードし、API によって呼び出されるメソッドを実装するクラスを作成して、特定のことを通知したり、結果を渡したりします。
これは明らかにマーシャリングの悪夢になります。さらに、さまざまなプラグインやマネージャーから、API 通知機能に登録されている通知用に呼び出されるメソッドを実装するすべてのオブジェクトに API を介して呼び出しを渡す中間オブジェクトもいくつかあるため、これは手に負えなくなりつつあります。複雑さの。
APIをロードする人が行う必要がある作業を短縮するために、APIがフリースレッドモデルに従う場合、ダイアログなどのMFCによって生成されたクラスが必要なCOMインターフェイスを実装することは可能ですか?通知用?API がこれらのメソッドを呼び出せるように、そのようなオブジェクトを IStream に変換し、API 側でインターフェイスに戻す必要があることに注意してください。
私の知る限り、MFC ダイアログはデフォルトで STA です。それらを強制的に変更したり、MTA で開始したりする方法はありますか? COMの観点からも合法ですか?物事が複雑になるため、別のスレッドで通知を処理するために別のオブジェクトを作成しないようにしています。この API は複数の場所で使用する必要があり、GUI やサービスなどで使用する必要があります。