CDocObjectServer クラス
標準の COleDocument
サーバーを完全な DocObject サーバーにするために必要な、 IOleDocument
、 IOleDocumentView
、 IOleCommandTarget
、 IPrint
などの追加 OLE インターフェイスを実装します。
構文
class CDocObjectServer : public CCmdTarget
メンバー
パブリック コンストラクター
名前 | 説明 |
---|---|
CDocObjectServer::CDocObjectServer | CDocObjectServer オブジェクトを構築します。 |
パブリック メソッド
名前 | 説明 |
---|---|
CDocObjectServer::ActivateDocObject | ドキュメント オブジェクト サーバーをアクティブ化しますが、表示されません。 |
保護メソッド
名前 | 説明 |
---|---|
CDocObjectServer::OnActivateView | DocObject ビューを表示します。 |
CDocObjectServer::OnApplyViewState | DocObject ビューの状態を復元します。 |
CDocObjectServer::OnSaveViewState | DocObject ビューの状態を保存します。 |
解説
CDocObjectServer
は CCmdTarget
から派生し、 COleServerDoc
と密接に連携してインターフェイスを公開します。
DocObject サーバー ドキュメントには、DocObject アイテムへのサーバー インターフェイスを表す CDocObjectServerItem オブジェクトを含めることができます。
DocObject サーバーをカスタマイズするには、 CDocObjectServer
から独自のクラスを派生させ、そのビューのセットアップ関数、 OnActivateView、 OnApplyViewState、および OnSaveViewState をオーバーライドします。 フレームワークの呼び出しに応答して、クラスの新しいインスタンスを提供する必要があります。
DocObjects の詳細については、「MFC リファレンス」の「CDocObjectServerItemCOleCmdUI」を参照。
継承階層
CDocObjectServer
要件
Header: afxdocob.h
CDocObjectServer::ActivateDocObject
この関数を呼び出して、ドキュメント オブジェクト サーバーをアクティブ化 (表示はしない) します。
void ActivateDocObject();
解説
ActivateDocObject
はIOleDocumentSite
ActivateMe
メソッドを呼び出しますが、CDocObjectServer::OnActivateView の呼び出しで指定されたビューの設定方法と表示方法に関する特定の手順を待機するため、ビューは表示されません。
一緒に、docObject ビューをアクティブ化して表示OnActivateView
、ActivateDocObject
して表示します。 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
をオーバーライドしてその情報を読み取り、新しくアクティブ化されたときにビューに適用します。