Active ドキュメント コンテナー
アクティブ ドキュメント コンテナーは、 Microsoft Office バインダーまたは Internet Explorer など、単一のゾーン内の異なるアプリケーションの型の複数のドキュメントを使用できるようにします (各ドキュメント型に対して複数のアプリケーションのゾーンを作成し、代わりに使用します)。
MFC は COleDocObjectItem のクラスのアクティブ ドキュメント コンテナーに完全にサポートされています。MFC アプリケーション ウィザードの 複合ドキュメント サポート のページの Active document container のチェック ボックスをオンにしてアクティブ ドキュメント コンテナーを作成するには、 MFC アプリケーション ウィザードを使用できます。詳細については、 アクティブ ドキュメント コンテナー アプリケーションの作成を参照してください。
アクティブ ドキュメント コンテナーに関する詳細については、 " " を参照してください:
コンテナーの必要条件
ドキュメントのサイト オブジェクト
ビューのサイト オブジェクト
フレーム オブジェクト
コンテナーの必要条件
アクティブ ドキュメント コンテナーのアクティブ ドキュメント サポートは多くには、インターフェイスの実装を意味します: また、含まれるオブジェクトのインターフェイスの使用に関する知識が必要です。これは、アクティブ文書のその機能拡張インターフェイス自体を使用する方法をコンテナーも理解しておく必要があるアクティブ ドキュメントの拡張機能に適用します。
アクティブ ドキュメントを統合するアクティブ ドキュメント コンテナーはです:
IPersistStorage インターフェイスを通じてオブジェクトのストレージを処理できる場合は。つまり、各アクティブ ドキュメントに IStorage のインスタンスを提供する必要があります。
OLE ドキュメントの機能を埋め込む基本をサポートします。サイトが発生する 「」 (ドキュメントまたは埋め込み 1 レベルごとに 1 文字)その実装 IOleClientSite と IAdviseSinkにオブジェクト。
埋め込みオブジェクトまたはアクティブ ドキュメントのサポート埋め込み先編集の有効化。コンテナーのサイト オブジェクトは IOleInPlaceSite を実行し、コンテナーのフレーム オブジェクトは IOleInPlaceFrameを提供する必要があります。
IOleDocumentSite の機能を提供するために実装によってアクティブ ドキュメントの拡張機能をコンテナーがドキュメントと通信できるようにサポートします。必要に応じて、コンテナーは印刷や保存などの単純なコマンドを受け取るようにアクティブ ドキュメント インターフェイス IOleCommandTarget と IContinueCallback を実行できます。
フレーム オブジェクト、ビュー オブジェクトとコンテナー オブジェクトは省略可能で コマンドの対象に説明されているように、特定のコマンドのディスパッチをサポートするに IOleCommandTarget を実行できます。ビューおよびコンテナー オブジェクトは、サポートするために IPrint と IContinueCallbackを、 プログラムによる印刷に説明されているように、プログラムで印刷を実行できます。
次の図は、コンテナーとコンポーネント間の概念的な関係 (左側)と、アクティブ ドキュメントとビューを示します (承認)。アクティブ ドキュメントは、データ ストレージを管理し、ビュー、またはオプションでデータ印刷表示されます。太字のインターフェイスはアクティブ ドキュメントの中に必要な、います; これらの太字と斜体は省略可能です。他のインターフェイスは、すべて必要です。
一つのビューだけをサポートするドキュメントは単一の具象クラス ビューとドキュメントのコンポーネントの両方 (つまり、対応するインターフェイス)を実装できます。また、 1 桁のビューだけを一度にサポートするコンテナーのサイトは、単一の具体的なサイトのクラスにドキュメントのサイトとビューのサイトを組み合わせることができます。ただし、コンテナーのフレーム オブジェクトには一意である必要があり、アーキテクチャの完全なピクチャを付けるためにコンテナーのドキュメントのコンポーネントは、ここに含まれています; これは、アクティブ ドキュメント コンテインメントのアーキテクチャは影響しません。
ドキュメントのサイト オブジェクト
アクティブ ドキュメントのコンテインメント アーキテクチャでは、ドキュメントのサイトは IOleDocument インターフェイスの加算を使用して OLE ドキュメントのクライアント サイト オブジェクトと同じです:
interface IOleDocumentSite : IUnknown
{
HRESULT ActivateMe(IOleDocumentView *pViewToActivate);
}
ドキュメントのサイトで概念的には一つ以上のビュー 「Site」オブジェクトのコンテナーです。各ビューのサイト オブジェクトはドキュメントのサイトでドキュメントのマネージ個々のビュー オブジェクトに関連付けられます。コンテナーがドキュメントのサイトごとに一つのビューだけをサポートする場合は、単一の具象クラスを持つドキュメントのサイトとビューのサイトを実行できます。
ビューのサイト オブジェクト
コンテナーのビューのサイト オブジェクトはドキュメントの特定のビューの表示領域を管理します。IOleInPlaceSite 標準インターフェイスをサポートするだけでなく、ビューのサイトは、通常、プログラムによる印刷コントロールの IContinueCallback を実行します。IContinueCallback これに対して、ビュー オブジェクトのクエリは、オブジェクトのコンテナー実際には実行できないこと (は CLR)。
複数のビューをサポートするコンテナーは、ドキュメントのサイト内の複数のビューのサイト オブジェクトを作成する必要があります。これは IOleInPlaceSiteして別のアクティベーションおよび非サービスを各ビューにそのまま示します。
フレーム オブジェクト
コンテナーのフレーム オブジェクトは、通常、 OLE ドキュメント内の埋め込み先編集の有効化、メニュー、ツールバー ネゴシエーションを処理するつまり、 1 で使用される帯同じです。ビュー オブジェクトに IOleInPlaceSite::GetWindowContextによって、 (コンテナー オブジェクトへのアクセスを表すペイン レベルのツールバー交渉、および含まれるオブジェクトの列挙を処理できる提供する)コンテナー ドキュメントこのフレーム オブジェクトにアクセスできます。
アクティブ ドキュメント コンテナーは IOleCommandTargetの追加によってゾーンを向上できます。このインターフェイスは、コンテナーが同じコマンドを送信することを許可できることがアクティブ ドキュメントのユーザー インターフェイスに同じ方法で作成されたコマンドを受け取るようにします ( File New、 開く(&&O),開く,[開く]、 名前を付けて保存、 印刷など); Edit Copy、 貼り付け(&&P),貼り付け、 元に戻す(&&U),元に戻す、アクティブ ドキュメントに対するそのほか)。詳細については、 コマンドの対象を参照してください。