次の方法で共有


コンテナー: コンテナーの実装

この記事では、コンテナーを実装する手順の概要を示し、コンテナーの実装に関する詳細な説明を提供する他の記事を示します。 また、実装する必要があるオプションの OLE 機能と、これらの機能について説明する記事も一覧表示します。

CWinApp 派生クラスを準備するには

  1. InitInstance メンバー関数でAfxOleInitを呼び出して、OLE ライブラリを初期化します。

  2. InitInstanceCDocTemplate::SetContainerInfoを呼び出して、埋め込み項目がインプレースでアクティブ化されたときに使用されるメニューとアクセラレータ リソースを割り当てます。 このトピックの詳細については、「 ライセンス認証」を参照してください。

これらの機能は、MFC アプリケーション ウィザードを使用してコンテナー アプリケーションを作成するときに自動的に提供されます。 MFC EXE プログラムの作成を参照してください。

ビュー クラスを準備するには

  1. 選択した項目に対する複数の選択をサポートしている場合は、ポインターまたはポインターのリストを維持して、選択した項目を追跡します。 OnDraw関数では、すべての OLE 項目を描画する必要があります。

  2. IsSelectedをオーバーライドして、渡された項目が現在選択されているかどうかを確認します。

  3. OnInsertObject メッセージ ハンドラーを実装して、[オブジェクトの挿入] ダイアログ ボックスを表示します。

  4. ビューからインプレースのアクティブな OLE 埋め込みアイテムにフォーカスを転送する OnSetFocus メッセージ ハンドラーを実装します。

  5. OnSize メッセージ ハンドラーを実装して、OLE 埋め込みアイテムに、その四角形を変更して、含まれているビューのサイズの変更を反映する必要があることを通知します。

これらの機能の実装はアプリケーションによって大きく異なるため、アプリケーション ウィザードでは基本的な実装のみが提供されます。 アプリケーションを適切に機能させるには、これらの関数をカスタマイズする必要があります。 この例については、 CONTAINER サンプルを参照してください。

埋め込みアイテムとリンクされたアイテムを処理するには

  1. COleClientItem からクラスを派生させます。 このクラスのオブジェクトは、OLE ドキュメントに埋め込まれたアイテムまたは OLE ドキュメントにリンクされているアイテムを表します。

  2. OnChangeOnChangeItemPosition、およびOnGetItemPositionをオーバーライドします。 これらの関数は、埋め込みおよびリンクされた項目のサイズ変更、配置、変更を処理します。

アプリケーション ウィザードによってクラスが派生しますが、前の手順の手順 2 で示した OnChange とその他の関数をオーバーライドする必要がある可能性があります。 これらの関数はアプリケーション間で異なる方法で実装されるため、ほとんどのアプリケーションに合わせてスケルトン実装をカスタマイズする必要があります。 この例については、MFC サンプル DRAWCLICONTAINER を参照してください。

OLE をサポートするには、コンテナー アプリケーションのメニュー構造に複数の項目を追加する必要があります。 これらの詳細については、「 メニューとリソース: コンテナーの追加」を参照してください。

また、コンテナー アプリケーションで次の機能の一部をサポートすることもできます。

  • 埋め込みアイテムを編集するときのインプレース アクティブ化。

    詳細については、「 ライセンス認証」を参照してください。

  • サーバー アプリケーションから選択項目をドラッグ アンド ドロップして OLE 項目を作成します。

    詳細については、「 OLE ドラッグ アンド ドロップ」を参照してください。

  • 埋め込みオブジェクトまたはコンテナー/サーバー アプリケーションの組み合わせへのリンク。

    詳細については、「 コンテナー: 高度な機能」を参照してください。

こちらも参照ください

コンテナー
コンテナ: クライアントアイテム