サーバー : サーバー アイテム
ユーザーが埋め込まれたまたはリンクされた OLE アイテムを編集できるよう、コンテナーはサーバーを起動したときにサーバー アプリケーションでは、 「サーバー項目を作成します」。COleServerItemから派生したクラスのオブジェクトであるサーバー項目は、サーバー ドキュメントとコンテナー アプリケーション間のインターフェイスを提供します。
COleServerItem のクラスは、コンテナーからの要求に対して OLE で呼ばれるいくつかのオーバーライド可能なメンバー関数は、通常は定義します。サーバー項目は、サーバー ドキュメントまたはドキュメント全体の一部を表すことができます。項目が OLE コンテナー ドキュメントに埋め込むと、サーバー項目は、サーバー全体のドキュメントを表します。OLE アイテムをリンクすると、サーバー項目はリンクが一部または全体にあるかどうかをサーバー ドキュメントまたはドキュメント全体の一部を、によって表すことができます。
HIERSVR のサンプル (たとえば、サーバー項目のクラス、 CServerItemでは、クラス CServerNodeのオブジェクトへのポインターであるメンバーが含まれます。CServerNode のオブジェクトは、ツリーの HIERSVR アプリケーションのドキュメントのノードです。CServerNode のオブジェクトがルート ノードの場合、 CServerItem のオブジェクトは、ドキュメント全体を表します。CServerNode のオブジェクトが子ノードの場合、 CServerItem のオブジェクトは、文書の一部を表します。この対話の例については、 " MFC サンプルの OLE HIERSVR を参照してください。
サーバー項目の実行
アプリケーションの開始 「」コードを生成するためにアプリケーション ウィザードを使用してコードは、 OLE オプション ページからサーバー オプションの 1 つがを選択することであるスタートにサーバー項目を含めるに必要なすべて。既存のアプリケーションにサーバー項目を追加する場合は、次の手順を実行します:
サーバー項目を実行するには
COleServerItem の派生クラスを作成します。
派生クラスでは、 OnDraw のメンバー関数をオーバーライドします。
フレームワークは、メタファイルに OLE アイテムを表示するに OnDraw をダイヤルします。コンテナー アプリケーションは項目を表示するには、このメタファイルを使用します。アプリケーションのビュー クラスには、サーバー アプリケーションがアクティブなときに項目の表示に使用される OnDraw のメンバー関数があります。
サーバー ドキュメント クラスの OnGetEmbeddedItem のオーバーライドを実装します。詳細については、技術情報 サーバー: ドキュメント サーバーの実装 と MFC OLE HIERSVRサンプルを参照してください。
サーバー項目のクラスの OnGetExtent のメンバー関数を実装します。フレームワークは、項目のサイズを取得するには、この関数を呼び出しますします。既定の実装では、何も行われません。
サーバー項目アーキテクチャのツール ヒント
サーバー項目の実行に示すように、サーバー アプリケーションでは、サーバーのビューとコンテナー アプリケーションで使用されるメタファイルの項目の両方を表示できる必要があります。Microsoft Foundation Class ライブラリのアプリケーション アーキテクチャでは、ビュー クラスの OnDraw のメンバー関数は、編集しているときに項目を表示します ( クラス ライブラリ リファレンスの CView::OnDraw を参照してください)。サーバー項目の OnDraw は、メタファイルに項目を他のいずれの場合でもレンダリングします ( COleServerItem::OnDrawを参照してください)。
サーバー ドキュメント クラスのヘルパー関数を作成し、ビューとサーバー項目のクラスの OnDraw の関数からの呼び出しによってコードの重複を回避できます。MFC OLE サンプル HIERSVR は、この方法を使用します: 関数は CServerView::OnDraw と CServerItem::OnDraw 両方の項目を表示するに CServerDoc::DrawTree をダイヤルします。
さまざまな条件で描画するために、ビューと項目の両方に OnDraw のメンバー関数があります。ビューはスクロール バーのようなズームなどの要因を、選択のサイズと範囲、クリッピングとユーザーインターフェイス要素を考慮に入れる必要があります。サーバー項目は、全体の OLE オブジェクトを常に描画します。
詳細については、 クラス ライブラリ リファレンスの CView::OnDraw、 COleServerItem、 COleServerItem::OnDrawと COleServerDoc::OnGetEmbeddedItem を参照してください。