コンテナ : コンテナの実装
更新 : 2007 年 11 月
ここではコンテナを実装する手順を概説し、コンテナの実装についての詳細を説明しているほかのトピックを示します。また、OLE で実装できるオプション機能と、それらの機能を説明しているトピックも示します。
CWinApp の派生クラスを作成するには
メンバ関数 InitInstance の中で関数 AfxOleInit を呼び出し、OLE ライブラリを初期化します。
メンバ関数 InitInstance の中で関数 CDocTemplate::SetContainerInfo を呼び出し、埋め込みアイテムの埋め込み先編集が有効化されたときに使われるメニュー リソースとアクセラレータ リソースを割り当てます。詳細については、「アクティベーション」を参照してください。
MFC アプリケーション ウィザードを使ってコンテナ アプリケーションを作成すると、これらの機能は自動的に提供されます。「MFC アプリケーション ウィザード」を参照してください。
ビュー クラスを作成するには
選択されたアイテムを追跡するためにアイテムを指すポインタを保持します。複数選択できる場合は、ポインタのリストを保持します。OnDraw 関数ですべての OLE アイテムを描画する必要があります。
関数 IsSelected をオーバーライドし、渡されたアイテムが現在選択中かどうかを調べられるようにします。
OnInsertObject メッセージ ハンドラを実装し、[オブジェクトの挿入] ダイアログ ボックスを表示します。
埋め込み先編集が有効化された OLE 埋め込みアイテムにフォーカスを移動するように、OnSetFocus メッセージ ハンドラを実装します。
OLE 埋め込みアイテムに対して、周囲のビューの大きさに合わせてサイズを変更するように通知するために、OnSize メッセージ ハンドラを実装します。
これらの機能の実装方法はアプリケーションによって大きく異なるため、アプリケーション ウィザードは基本的な実装だけを提供しています。アプリケーションが正しく機能するためには、これらの機能をカスタマイズしなければならない可能性があります。この手順の例については、CONTAINER のサンプルを参照してください。
埋め込みアイテムとリンク アイテムを処理するには
COleClientItem クラスからクラスを派生します。このクラスのオブジェクトは、OLE ドキュメントに埋め込まれたアイテム、またはリンクされたアイテムを表します。
OnChange、OnChangeItemPosition、OnGetItemPosition の各関数をオーバーライドします。これらの関数は埋め込みアイテムおよびリンク アイテムのサイズ、位置、および内容の変更を処理します。
アプリケーション ウィザードはクラスを自動的に派生しますが、上の手順のステップ 2 で示した OnChange などの関数はオーバーライドする必要があるはずです。アプリケーションによって機能の実装方法が異なるので、通常、スケルトン実装の動作を変更する必要があります。この手順の例については、MFC サンプルの DRAWCLI および CONTAINER を参照してください。
OLE をサポートするには、多くのアイテムをコンテナ アプリケーションのメニューに追加する必要があります。詳細については、「メニューとリソース : コンテナの変更点」を参照してください。
コンテナ アプリケーションでは、以下の機能をサポートできます。
埋め込みアイテムを編集するための埋め込み先編集の有効化
詳細については、「アクティベーション」を参照してください。
サーバー アプリケーションから選択部分をドラッグ アンド ドロップして行う OLE アイテムの作成
詳細については、「ドラッグ アンド ドロップ (OLE)」を参照してください。
埋め込みオブジェクトへのリンク、またはコンテナ/サーバー統合アプリケーションへのリンク
詳細については、「コンテナ : 高度な機能」を参照してください。