3

C ++ / MFCとC#の両方でプラグインを開発できるプラグインフレームワークを最適に開発するにはどうすればよいでしょうか。

ホストプログラムは、ネイティブC ++/MFCで開発された既存のプログラムです。このプログラムの機能を拡張するために、これまで、C ++ / MFCとC#で、別々のアプリケーションまたはWindowsサービスとして実行される別々のプログラムを開発してきました。これらのプログラムは現在、ファイルを介してホストアプリケーションと通信しています。これは明らかにかなり不器用な方法であるため、共通のプラグインフレームワークの下にそれらを導入したいと考えています。

各プログラムには、個別の設定管理もあります。したがって、すべての設定を1か所で管理できるように、各プラグインでホストアプリケーションの設定ウィンドウを拡張する必要があります。どうすれば柔軟で簡単な方法でそれを行うことができますか?

4

1 に答える 1

1

(...) したがって、それらを共通のプラグイン フレームワークの下に置きたいと考えています。(...)

これを行うには、C++/MFC dll プロジェクトでラップできるタイプ ライブラリに一連の COM インターフェイスを作成します。次に、C++ または C# からこのタイプ ライブラリをインポートし、定義済みのインターフェイスを実装する新しい COM クラスを作成できます。これらのアプローチの 2 つの欠点は次のとおりです。2- プラグインをシステムに登録するか、マニフェスト ファイルを提供する必要があります。

(...) したがって、すべての設定を 1 か所で管理できるように、各プラグインがホスト アプリケーションの設定ウィンドウを拡張する必要があります。(...)

これはもう少しトリッキーですが、プラグインごとに 1 つのタブを持つタブ コントロールを作成し、初期化中に対応するタブのウィンドウ ハンドルを各プラグインに渡し、それを使用して ActiveX を配置することができます。それを制御します。MFC での ActiveX コントロールの作成については十分に文書化されており、C# で同じことを行うためのサンプル プロジェクトがここにあります: CSActiveX サンプル

于 2013-02-26T21:28:44.167 に答える