CDocObjectServer クラス

標準の COleDocument サーバーを完全な DocObject サーバーにするために必要な、 IOleDocumentIOleDocumentViewIOleCommandTargetIPrintなどの追加 OLE インターフェイスを実装します。

構文

class CDocObjectServer : public CCmdTarget

メンバー

パブリック コンストラクター

名前 説明
CDocObjectServer::CDocObjectServer CDocObjectServer オブジェクトを構築します。

パブリック メソッド

名前 説明
CDocObjectServer::ActivateDocObject ドキュメント オブジェクト サーバーをアクティブ化しますが、表示されません。

保護メソッド

名前 説明
CDocObjectServer::OnActivateView DocObject ビューを表示します。
CDocObjectServer::OnApplyViewState DocObject ビューの状態を復元します。
CDocObjectServer::OnSaveViewState DocObject ビューの状態を保存します。

解説

CDocObjectServerCCmdTarget から派生し、 COleServerDoc と密接に連携してインターフェイスを公開します。

DocObject サーバー ドキュメントには、DocObject アイテムへのサーバー インターフェイスを表す CDocObjectServerItem オブジェクトを含めることができます。

DocObject サーバーをカスタマイズするには、 CDocObjectServer から独自のクラスを派生させ、そのビューのセットアップ関数、 OnActivateViewOnApplyViewState、および OnSaveViewState をオーバーライドします。 フレームワークの呼び出しに応答して、クラスの新しいインスタンスを提供する必要があります。

DocObjects の詳細については、「MFC リファレンス」の「CDocObjectServerItemCOleCmdUI」を参照

継承階層

CObject

CCmdTarget

CDocObjectServer

要件

Header: afxdocob.h

CDocObjectServer::ActivateDocObject

この関数を呼び出して、ドキュメント オブジェクト サーバーをアクティブ化 (表示はしない) します。

void ActivateDocObject();

解説

ActivateDocObjectIOleDocumentSiteActivateMeメソッドを呼び出しますが、CDocObjectServer::OnActivateView の呼び出しで指定されたビューの設定方法と表示方法に関する特定の手順を待機するため、ビューは表示されません。

一緒に、docObject ビューをアクティブ化して表示OnActivateViewActivateDocObjectして表示します。 DocObject のアクティブ化は、他の種類の OLE インプレース アクティブ化とは異なります。 DocObject アクティブ化では、インプレース ハッチの境界線やオブジェクトの装飾 (サイズ変更ハンドルなど) の表示がバイパスされ、オブジェクトエクステント関数は無視され、スクロール バーは、その四角形の外側に描画されるのではなく、ビューの四角形内に描画されます (通常のインプレース アクティブ化の場合と同様)。

CDocObjectServer::CDocObjectServer

CDocObjectServer オブジェクトを構築して初期化します。

explicit CDocObjectServer(
    COleServerDoc* pOwner,
    LPOLEDOCUMENTSITE pDocSite = NULL);

パラメーター

pOwner
DocObject サーバーのクライアントであるクライアント サイト ドキュメントへのポインター。

pDocSite
コンテナーによって実装される IOleDocumentSite インターフェイスへのポインター。

解説

DocObject がアクティブな場合、クライアント サイトの OLE インターフェイス ( IOleDocumentSite) は、DocObject サーバーがクライアント (コンテナー) と通信できるようにします。 DocObject サーバーがアクティブ化されると、最初にコンテナーが IOleDocumentSite インターフェイスを実装していることを確認します。 その場合は、 COleServerDoc::GetDocObjectServer が呼び出され、コンテナーが DocObjects をサポートしているかどうかを確認します。 既定では、 GetDocObjectServer は NULL を返します。 COleServerDoc コンテナーとそのIOleDocumentSite インターフェイスへのポインターをコンストラクターへの引数として使用して、COleServerDoc::GetDocObjectServerをオーバーライドして、新しいCDocObjectServer オブジェクトまたは独自の派生オブジェクトを構築する必要があります。

CDocObjectServer::OnActivateView

DocObject ビューを表示するには、この関数を呼び出します。

virtual HRESULT OnActivateView();

戻り値

エラーまたは警告の値を返します。 既定では、成功した場合は NOERROR を返します。それ以外の場合はE_FAIL。

解説

この関数は、インプレース フレーム ウィンドウを作成し、ビュー内にスクロール バーを描画し、サーバーがコンテナーと共有するメニューを設定し、フレーム コントロールを追加し、アクティブなオブジェクトを設定してから、最後にインプレース フレーム ウィンドウを表示し、フォーカスを設定します。

CDocObjectServer::OnApplyViewState

DocObject ビューの状態を復元するには、この関数をオーバーライドします。

virtual void OnApplyViewState(CArchive& ar);

パラメーター

ar
ビューステートをシリアル化する CArchive オブジェクト。

解説

この関数は、インスタンス化後にビューが初めて表示されるときに呼び出されます。 OnApplyViewStateは、以前に OnSaveViewState で保存したCArchive オブジェクト内のデータに従って、ビュー自体を再初期化するように指示します。 コンテナーがビュー ステート データを解釈しようとしないため、ビューは CArchive オブジェクト内のデータを検証する必要があります。

OnSaveViewStateを使用して、ビューの状態に固有の永続的な情報を格納できます。 OnSaveViewStateをオーバーライドして情報を保存する場合は、OnApplyViewStateをオーバーライドしてその情報を読み取り、新しくアクティブ化されたときにビューに適用します。

CDocObjectServer::OnSaveViewState

DocObject ビューに関する追加の状態情報を保存するには、この関数をオーバーライドします。

virtual void OnSaveViewState(CArchive& ar);

パラメーター

ar
ビュー ステートがシリアル化される CArchive オブジェクト。

解説

状態には、ビューの種類、ズーム係数、挿入ポイント、選択ポイントなどのプロパティが含まれる場合があります。 コンテナーは通常、ビューを非アクティブ化する前にこの関数を呼び出します。 保存された状態は、後で OnApplyViewState を使用して復元できます。

OnSaveViewStateを使用して、ビューの状態に固有の永続的な情報を格納できます。 OnSaveViewStateをオーバーライドして情報を保存する場合は、OnApplyViewStateをオーバーライドしてその情報を読み取り、新しくアクティブ化されたときにビューに適用します。

関連項目

CCmdTarget クラス
階層図
CDocObjectServerItem クラス