MFCを使ったPluginオブジェクトの設計と実装 〜 後から追加可能な Doc/View 構造を考える 〜

GOTO TOP

今までの開発環境と言えば、VisualBasic か MFC でしょうか・・・?
どちらもそれなりには使える環境だと思いますが、やっぱり中途半端な気はします。

さて、その中途半端なMFCで、Doc/Viewアーキテクチャを利用しつつ、後から自由にDoc/Viewを追加できるようなアプリケーションを構築してゆきたいと思います。

MFC アプリケーションをくむときというのは、基本的には Document/View 構造で作成します(ダイアログベースのものをのぞきます)。

ところが、Document/View クラスを全てEXEに埋め込むとそれだけで実行ファイルのサイズも大きなものになってしまいます。
Document, View クラスだけで完結することなどなく、たいていは アプリケーションのデータを表すクラスや、画面描画の補助クラス、ダイアログクラスなどの Document/View クラスと関わるクラスがいろいろと出てきます。
当然クラスの数は増え、Document/View のペアが2,3、4と増えればかなり訳のわからない代物ができあがるに違いありません。

しかし、このとき、実行ファイル内部では CMyApp と、CMainFrame クラスのみ実体化し、Doc/Viewクラスは外部DLLに埋め込むような形で設計を行っていれば、少なくともこのクラスはどの Document クラスで使われてるの??といった疑問は消えてゆきます。

さらに、どうせ実装するなら Doc / View クラスの DLL を動的ロードできるようにしてEXEファイルには DOC / VIEW を管理するためのホスト的な機能のみ持たせ、そのほかの機能はすべてプラグイン形式で提供できるようなインターフェースをEXEファイルに持たせることができたとしたら・・・

そんな都合のいい話はあるのでしょうか・・・?

実装の詳細

Document,View を外部DLL に追い出す
Document,View が実装された DLL と動的リンクする
メニューとツールバー、ステータスバー
メニューコマンドの Dispatch
プラグイン形式でアドオンツールを追加する
複数のドキュメントをプロジェクト管理する
GOTO TOP
制作 かみさま(水原 寛之) [連絡先]:byf03663 atmark nifty.ne.jp

バナー サークルバナー SourceForge.jp