コンテナー : 高度な機能
この技術情報では、既存のコンテナー アプリケーションに応じて高度な機能を組み込むために必要な手順について説明します。これらの機能は次のとおりです:
コンテナーとサーバーの両方であるアプリケーション
OLE 埋め込みオブジェクトへのリンク
コンテナー/サーバー アプリケーションの作成
コンテナー/サーバー アプリケーションでは、コンテナーとサーバーの両方として機能するアプリケーションです。ウィンドウの Microsoft Word は、この一例です。他のアプリケーション ウィンドウのドキュメントの単語を埋め込み、 Windows のドキュメントの単語の項目を埋め込むことができます。コンテナーとフル サーバーの両方 (組み合わせのコンテナーとミニサーバーのアプリケーションを作成できません)であるコンテナー アプリケーションを変更するプロセスは、フル サーバーを作成するプロセスに似ています。
技術情報 サーバー: サーバーの実装 は、サーバー アプリケーションを実行するために必要な数多くのタスクを一覧表示します。コンテナー内にコンテナー アプリケーションとサーバー アプリケーション変換すると、これらの同じのいくつかのタスクを実行する必要があります。コードをコンテナーに追加します。次は、考慮する必要がある重要な事項を示します:
アプリケーション ウィザードで作成されるコンテナー コードは既に OLE サブシステムを初期化します。このサポートのコードを変更または追加する必要はありません。
常にドキュメント クラスの基本クラスは COleServerDocに COleDocument、変更する基本クラスです。
サーバー自体が編集に使用している項目を編集しないように COleClientItem::CanActivate をオーバーライドします。
たとえば、 MFC のサンプル OCLIENT は OLE コンテナー/サーバー アプリケーションで作成した項目が埋め込まれています。OCLIENT アプリケーションを開き、項目がコンテナー/サーバー アプリケーションで作成した埋め込み先編集。アプリケーションの項目を編集している間、 MFC OLE サンプル HIERSVRによって作成される項目を埋め込むことを決定します。これを行うには、埋め込み先編集の有効化を使用できません。完全にこの項目をアクティブにするに HIERSVR を開きます。Microsoft Foundation Class ライブラリがこの OLE 機能をサポートしないため、 COleClientItem::CanActivate をオーバーライドして、この状況をチェックし、アプリケーションで実行時エラーの発生を防ぐことができます。
新しいアプリケーションを作成して、コンテナー/サーバー アプリケーションとして機能する場合は、アプリケーション ウィザードとこのサポートの OLE オプション] ダイアログ ボックスのオプションが自動的に作成されます。選択します。詳細については、技術情報 概要: ActiveX コントロール コンテナーの作成を参照してください。MFC のサンプルについては、 MFC サンプルを参照してください。
自身に MDI アプリケーションを挿入できないことに注意してください。コンテナー/サーバー上でアプリケーションが自身に、 SDI アプリケーションでない場合は挿入できません。
埋め込みオブジェクトへのリンク
埋め込みオブジェクト機能へのリンクは、コンテナー アプリケーション内の埋め込みオブジェクトに OLE の [リンクとドキュメントを作成できるようにします。たとえば、埋め込みスプレッドシートを含むワード プロセッサで文書を作成します。アプリケーションがサポートが埋め込まれたオブジェクトにリンクすると、ワード プロセッサのドキュメントに含まれるスプレッドシートにリンクを貼り付けることができます。この機能は、アプリケーションがワード プロセッサが最初に任意の場所に取得したかを確認せずにスプレッドシートに含まれる情報を使用できるようになります。
アプリケーションの埋め込みオブジェクトにリンクするには
COleDocumentの代わりに COleLinkingDoc からドキュメント クラスを派生します。
OLE 開発ツールに含まれるクラス ID のジェネレーターを使用してアプリケーションの OLE クラス ID (CLSID)を作成します。
OLE のアプリケーションを登録します。
アプリケーションのクラスのメンバーとして COleTemplateServer のオブジェクトを作成します。
アプリケーションの InitInstance クラスのメンバー関数で以下の作業を行います。:
オブジェクトの ConnectTemplate のメンバー関数を呼び出して、ドキュメント テンプレートへの COleTemplateServer のオブジェクトを接続します。
OLE システムを使用してすべてのクラス オブジェクトを登録するに COleTemplateServer::RegisterAll のメンバー関数を呼び出します。
COleTemplateServer::UpdateRegistry を呼び出します。UpdateRegistry への唯一のパラメーターには、アプリケーションの 「/Embedded」スイッチで起動 OAT_CONTAINER である必要があります。これは、埋め込まれたオブジェクトにリンクできるコンテナー サポートとしてアプリケーションを登録します。
アプリケーションが 「/Embedded」スイッチで起動し、サーバー アプリケーションと同様のメイン ウィンドウを表示することはできません。
MFC OLE OCLIENT サンプルでは、この機能を実装します。例にはこれがどのようにするか、このサンプル アプリケーションで OCLIENT.CPP ファイルの InitInstance 関数を参照してください。