COleServerItem クラス
OLE アイテムへのサーバー インターフェイスが用意されています。
構文
class COleServerItem : public CDocItem
メンバー
保護されたコンストラクター
名前 | 説明 |
---|---|
COleServerItem::COleServerItem | COleServerItem オブジェクトを構築します。 |
パブリック メソッド
名前 | 説明 |
---|---|
COleServerItem::AddOtherClipboardData | プレゼンテーション形式と変換形式を COleDataSource オブジェクトに配置します。 |
COleServerItem::CopyToClipboard | アイテムをクリップボードにコピーします。 |
COleServerItem::D oDragDrop | ドラッグ アンド ドロップ操作を実行します。 |
COleServerItem::GetClipboardData | データ転送で使用するデータ ソースを取得します (ドラッグ アンド ドロップまたはクリップボード)。 |
COleServerItem::GetDocument | アイテムを含むサーバー ドキュメントを返します。 |
COleServerItem::GetEmbedSourceData | OLE アイテムのCF_EMBEDSOURCE データを取得します。 |
COleServerItem::GetItemName | アイテムの名前を返します。 リンクされたアイテムにのみ使用されます。 |
COleServerItem::GetLinkSourceData | OLE アイテムのCF_LINKSOURCE データを取得します。 |
COleServerItem::GetObjectDescriptorData | OLE アイテムのCF_OBJECTDESCRIPTOR データを取得します。 |
COleServerItem::IsConnected | 項目が現在アクティブなコンテナーにアタッチされているかどうかを示します。 |
COleServerItem::IsLinkedItem | アイテムがリンクされた OLE アイテムを表すかどうかを示します。 |
COleServerItem::NotifyChanged | リンクの自動更新ですべてのコンテナーを更新します。 |
COleServerItem::OnDoVerb | 動詞を実行するために呼び出されます。 |
COleServerItem::OnDraw | コンテナーが項目の描画を要求したときに呼び出されます。実装が必要です。 |
COleServerItem::OnDrawEx | 特殊な項目描画のために呼び出されます。 |
COleServerItem::OnGetClipboardData | クリップボードにコピーされるデータを取得するためにフレームワークによって呼び出されます。 |
COleServerItem::OnGetExtent | OLE 項目のサイズを取得するためにフレームワークによって呼び出されます。 |
COleServerItem::OnInitFromData | 指定されたデータ転送オブジェクトの内容を使用して OLE 項目を初期化するために、フレームワークによって呼び出されます。 |
COleServerItem::OnQueryUpdateItems | リンクされたアイテムに更新が必要かどうかを判断するために呼び出されます。 |
COleServerItem::OnRenderData | 遅延レンダリングの一環としてデータを取得します。 |
COleServerItem::OnRenderFileData | 遅延レンダリングの一部として、 CFile オブジェクトにデータを取得します。 |
COleServerItem::OnRenderGlobalData | 遅延レンダリングの一環としてデータを HGLOBAL に取得します。 |
COleServerItem::OnSetColorScheme | アイテムの配色を設定するために呼び出されます。 |
COleServerItem::OnSetData | アイテムのデータを設定するために呼び出されます。 |
COleServerItem::OnSetExtent | OLE 項目のサイズを設定するためにフレームワークによって呼び出されます。 |
COleServerItem::OnUpdate | アイテムが属するドキュメントの一部が変更されたときに呼び出されます。 |
COleServerItem::OnUpdateItems | サーバー ドキュメント内のすべての項目のプレゼンテーション キャッシュを更新するために呼び出されます。 |
COleServerItem::SetItemName | 項目の名前を設定します。 リンクされたアイテムにのみ使用されます。 |
保護メソッド
名前 | 説明 |
---|---|
COleServerItem::GetDataSource | 変換形式の格納に使用するオブジェクトを取得します。 |
COleServerItem::OnHide | OLE 項目を非表示にするためにフレームワークによって呼び出されます。 |
COleServerItem::OnOpen | OLE 項目を独自の最上位ウィンドウに表示するために、フレームワークによって呼び出されます。 |
COleServerItem::OnShow | コンテナーが項目の表示を要求したときに呼び出されます。 |
パブリック データ メンバー
名前 | 説明 |
---|---|
COleServerItem::m_sizeExtent | OLE 項目の表示量をサーバーに通知します。 |
解説
リンク アイテムは、サーバー ドキュメントの一部またはすべてを表すことができます。 埋め込みアイテムは、常にサーバー ドキュメント全体を表します。
COleServerItem
クラスは、OLE システム ダイナミック リンク ライブラリ (DLL) によって呼び出される、通常はコンテナー アプリケーションからの要求に応じて、いくつかのオーバーライド可能なメンバー関数を定義します。 これらのメンバー関数を使用すると、コンテナー アプリケーションは、アイテムの表示、動詞の実行、さまざまな形式でのデータの取得など、さまざまな方法で間接的に項目を操作できます。
COleServerItem
を使用するには、そこからクラスを派生させ、OnDraw および Serialize メンバー関数を実装します。 OnDraw
関数は、項目のメタファイル表現を提供し、コンテナー アプリケーションが複合ドキュメントを開いたときに表示できるようにします。 CObject
のSerialize
関数は、アイテムのネイティブ表現を提供し、埋め込みアイテムをサーバー アプリケーションとコンテナー アプリケーションの間で転送できるようにします。 OnGetExtent は、アイテムの自然なサイズをコンテナーに提供し、コンテナーが項目のサイズを変更できるようにします。
サーバーと関連トピックの詳細については、「 サーバー: サーバーの実装 」および「コンテナー/サーバー アプリケーションの作成」の記事「 Containers: Advanced Features」を参照してください。
継承階層
COleServerItem
要件
ヘッダー: afxole.h
COleServerItem::AddOtherClipboardData
OLE アイテムのプレゼンテーション形式と変換形式を指定した COleDataSource
オブジェクトに配置するには、この関数を呼び出します。
void AddOtherClipboardData(COleDataSource* pDataSource);
パラメーター
pDataSource
データを配置する COleDataSource
オブジェクトへのポインター。
解説
アイテムのプレゼンテーション形式 (メタファイル画像) を提供するには、 OnDraw メンバー関数を実装する必要があります。 他の変換形式をサポートするには、GetDataSource によって返される COleDataSource オブジェクトを使用してそれらを登録し、OnRenderData メンバー関数をオーバーライドして、サポートする形式のデータを提供します。
COleServerItem::COleServerItem
COleServerItem
オブジェクトを構築し、サーバー ドキュメントのドキュメント 項目のコレクションに追加します。
COleServerItem(
COleServerDoc* pServerDoc,
BOOL bAutoDelete);
パラメーター
pServerDoc
新しい項目を含むドキュメントへのポインター。
bAutoDelete
オブジェクトへのリンクが解放されたときにオブジェクトを削除できるかどうかを示すフラグ。 COleServerItem
オブジェクトが、削除する必要があるドキュメントのデータの不可欠な部分である場合は、これを FALSE に設定します。 オブジェクトが、フレームワークによって削除できるドキュメントのデータ内の範囲を識別するために使用されるセカンダリ構造体である場合は、これを TRUE に設定します。
COleServerItem::CopyToClipboard
OLE 項目をクリップボードにコピーするには、この関数を呼び出します。
void CopyToClipboard(BOOL bIncludeLink = FALSE);
パラメーター
bIncludeLink
リンク データをクリップボードにコピーする必要がある場合は、これを TRUE に設定します。 サーバー アプリケーションがリンクをサポートしていない場合は、これを FALSE に設定します。
解説
この関数は、 OnGetClipboardData メンバー関数を使用して、サポートされている形式で OLE アイテムのデータを含む COleDataSource オブジェクトを作成します。 次に、COleDataSource::SetClipboard 関数を使用して、COleDataSource
オブジェクトをクリップボードに配置します。 COleDataSource
オブジェクトには、項目のネイティブ データとそのCF_METAFILEPICT形式での表現、およびサポートする任意の変換形式のデータが含まれます。 このメンバー関数を機能させるには、 Serialize および OnDraw を実装しておく必要があります。
COleServerItem::D oDragDrop
DoDragDrop
メンバー関数を呼び出して、ドラッグ アンド ドロップ操作を実行します。
DROPEFFECT DoDragDrop(
LPCRECT lpRectItem,
CPoint ptOffset,
BOOL bIncludeLink = FALSE,
DWORD dwEffects = DROPEFFECT_COPY | DROPEFFECT_MOVE,
LPCRECT lpRectStartDrag = NULL);
パラメーター
lpRectItem
クライアント領域を基準にした画面上の項目の四角形 (ピクセル単位)。
ptOffset
ドラッグ時のマウス位置 lpItemRect からのオフセット。
bIncludeLink
リンク データをクリップボードにコピーする必要がある場合は、これを TRUE に設定します。 アプリケーションがリンクをサポートしていない場合は、FALSE に設定します。
dwEffects
ドラッグ操作 (コピー、移動、リンクの組み合わせ) でドラッグ 元が許可する効果を指定します。
lpRectStartDrag
ドラッグが実際に開始される場所を定義する四角形へのポインター。 詳細については、「解説」を参照してください。
戻り値
DROPEFFECT 列挙型の値。 DROPEFFECT_MOVEされている場合は、元のデータを削除する必要があります。
解説
ドラッグ アンド ドロップ操作はすぐには開始されません。 マウス カーソルが lpRectStartDrag で指定された四角形を離れるまで、または指定したミリ秒が経過するまで待ちます。 lpRectStartDrag が NULL の場合は、マウス カーソルが 1 ピクセル移動したときにドラッグが開始されるように、既定の四角形が使用されます。
遅延時間は、レジストリ キーの設定によって指定されます。 遅延時間を変更するには、CWinApp::WriteProfileString または CWinApp::WriteProfileInt を呼び出します。 遅延時間を指定しない場合は、既定値の 200 ミリ秒が使用されます。 ドラッグの遅延時間は次のように格納されます。
Windows NT ドラッグの遅延時間は HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\NT\CurrentVersion\IniFileMapping\win.ini\Windows\DragDelay に格納されます。
Windows 3.x ドラッグの遅延時間は、WIN.INI ファイルの [Windows} セクションに格納されます。
Windows 95/98 ドラッグの遅延時間は、キャッシュされたバージョンの WIN.INI に格納されます。
ドラッグの遅延情報がレジストリまたは .INI ファイルのいずれかに格納される方法について詳しくは、Windows SDK の WriteProfileString に関する記事を参照してください。
COleServerItem::GetClipboardData
この関数を呼び出して、指定した COleDataSource オブジェクトに、 CopyToClipboard を呼び出した場合にクリップボードにコピーされるすべてのデータを入力します ( DoDragDrop を呼び出した場合も同じデータが転送されます)。
void GetClipboardData(
COleDataSource* pDataSource,
BOOL bIncludeLink = FALSE,
LPPOINT lpOffset = NULL,
LPSIZE lpSize = NULL);
パラメーター
pDataSource
サポートされているすべての形式で OLE アイテムのデータを受け取る COleDataSource
オブジェクトへのポインター。
bIncludeLink
リンク データをクリップボードにコピーする場合は TRUE。 サーバー アプリケーションがリンクをサポートしていない場合は FALSE。
lpOffset
オブジェクトの原点からのマウス カーソルのオフセット (ピクセル単位)。
lpSize
オブジェクトのサイズ (ピクセル単位)。
解説
この関数は、 GetEmbedSourceData メンバー関数を呼び出して OLE アイテムのネイティブ データを取得し、 AddOtherClipboardData メンバー関数を呼び出して、プレゼンテーション形式とサポートされている変換形式を取得します。 bIncludeLink が TRUE の場合、この関数は GetLinkSourceData も呼び出して、アイテムのリンク データを取得します。
CopyToClipboard
によって提供される形式の前または後にCOleDataSource
オブジェクトに書式を配置する場合は、この関数をオーバーライドします。
COleServerItem::GetDataSource
この関数を呼び出して、サーバー アプリケーションがサポートする変換形式を格納するために使用する COleDataSource オブジェクトを取得します。
COleDataSource* GetDataSource();
戻り値
変換形式の格納に使用する COleDataSource
オブジェクトへのポインター。
解説
サーバー アプリケーションでデータ転送操作中にさまざまな形式でデータを提供する場合は、この関数によって返される COleDataSource
オブジェクトにそれらの形式を登録します。 たとえば、クリップボードまたはドラッグ アンド ドロップ操作用に OLE アイテムのCF_TEXT表現を指定する場合は、この関数が返す COleDataSource
オブジェクトに書式を登録し、 OnRenderXxxData
メンバー関数をオーバーライドしてデータを提供します。
COleServerItem::GetDocument
アイテムを含むドキュメントへのポインターを取得するには、この関数を呼び出します。
COleServerDoc* GetDocument() const;
戻り値
アイテムを含むドキュメントへのポインター。アイテムがドキュメントの一部でない場合は NULL。
解説
これにより、 COleServerItem
コンストラクターに引数として渡したサーバー ドキュメントにアクセスできます。
COleServerItem::GetEmbedSourceData
OLE アイテムのCF_EMBEDSOURCE データを取得するには、この関数を呼び出します。
void GetEmbedSourceData(LPSTGMEDIUM lpStgMedium);
パラメーター
lpStgMedium
OLE アイテムのCF_EMBEDSOURCE データを受け取る STGMEDIUM 構造体へのポインター。
解説
この形式には、アイテムのネイティブ データが含まれます。 この関数が正常に動作するには、 Serialize
メンバー関数を実装しておく必要があります。
その後、 COleDataSource::CacheData を使用して、結果をデータ ソースに追加できます。 この関数は、 COleServerItem::OnGetClipboardData によって自動的に呼び出されます。
詳細については、Windows SDK の「 STGMEDIUM 」を参照してください。
COleServerItem::GetItemName
この関数を呼び出して、項目の名前を取得します。
const CString& GetItemName() const;
戻り値
項目の名前。
解説
通常、この関数はリンクされたアイテムに対してのみ呼び出します。
COleServerItem::GetLinkSourceData
OLE アイテムのCF_LINKSOURCE データを取得するには、この関数を呼び出します。
BOOL GetLinkSourceData(LPSTGMEDIUM lpStgMedium);
パラメーター
lpStgMedium
OLE アイテムのCF_LINKSOURCE データを受け取る STGMEDIUM 構造体へのポインター。
戻り値
正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。
解説
この形式には、OLE アイテムの種類を記述する CLSID と、OLE アイテムを含むドキュメントを検索するために必要な情報が含まれます。
結果は、 COleDataSource::CacheData を使用してデータ ソースに追加できます。 この関数は、 OnGetClipboardData によって自動的に呼び出されます。
詳細については、Windows SDK の「 STGMEDIUM 」を参照してください。
COleServerItem::GetObjectDescriptorData
OLE アイテムのCF_OBJECTDESCRIPTOR データを取得するには、この関数を呼び出します。
void GetObjectDescriptorData(
LPPOINT lpOffset,
LPSIZE lpSize,
LPSTGMEDIUM lpStgMedium);
パラメーター
lpOffset
OLE 項目の左上隅からのマウス クリックのオフセット。 NULL にすることができます。
lpSize
OLE 項目のサイズ。 NULL にすることができます。
lpStgMedium
OLE アイテムのCF_OBJECTDESCRIPTOR データを受け取る STGMEDIUM 構造体へのポインター。
解説
情報は、lpStgMedium が指すSTGMEDIUM
構造体にコピーされます。 この形式には、[特殊な貼り付け] ダイアログに必要な情報が含まれます。
詳細については、Windows SDK の「 STGMEDIUM 」を参照してください。
COleServerItem::IsConnected
OLE 項目が接続されているかどうかを確認するには、この関数を呼び出します。
BOOL IsConnected() const;
戻り値
項目が接続されている場合は 0 以外。それ以外の場合は 0。
解説
OLE 項目は、1 つ以上のコンテナーに項目への参照がある場合に接続されていると見なされます。 参照カウントが 0 より大きい場合、または埋め込み項目である場合、項目は接続されます。
COleServerItem::IsLinkedItem
OLE アイテムがリンク アイテムかどうかを確認するには、この関数を呼び出します。
BOOL IsLinkedItem() const;
戻り値
アイテムがリンクアイテムの場合は 0 以外。それ以外の場合は 0。
解説
アイテムが有効で、ドキュメントの埋め込みアイテムの一覧に返されない場合、アイテムはリンクされます。 リンクされたアイテムは、コンテナーに接続されている場合もあれば、接続されていない場合もあります。
リンクされた項目と埋め込みアイテムの両方に同じクラスを使用するのが一般的です。 IsLinkedItem
では、コードが一般的な場合は何度もありますが、リンクされた項目の動作を埋め込みアイテムとは異なる方法で行うことができます。
COleServerItem::m_sizeExtent
このメンバーは、コンテナー ドキュメントに表示されるオブジェクトの量をサーバーに通知します。
CSize m_sizeExtent;
解説
OnSetExtentの既定の実装は、このメンバーを設定します。
COleServerItem::NotifyChanged
リンクされたアイテムが変更された後、この関数を呼び出します。
void NotifyChanged(DVASPECT nDrawAspect = DVASPECT_CONTENT);
パラメーター
nDrawAspect
OLE 項目のどの側面が変更されたかを示す DVASPECT 列挙体の値。 このパラメーターには、次のいずれかの値を指定できます。
DVASPECT_CONTENT項目は、コンテナー内の埋め込みオブジェクトとして表示できるように表されます。
DVASPECT_THUMBNAILアイテムは、閲覧ツールに表示できるように、"サムネイル" 表現でレンダリングされます。
DVASPECT_ICON項目はアイコンで表されます。
DVASPECT_DOCPRINT項目は、[ファイル] メニューの [印刷] コマンドを使用して印刷されたかのように表されます。
解説
コンテナー 項目が自動リンクを使用してドキュメントにリンクされている場合、項目は変更を反映するように更新されます。 Microsoft Foundation クラス ライブラリを使用して記述されたコンテナー アプリケーションでは、 COleClientItem::OnChange が応答で呼び出されます。
COleServerItem::OnDoVerb
指定された動詞を実行するためにフレームワークによって呼び出されます。
virtual void OnDoVerb(LONG iVerb);
パラメーター
iVerb
実行する動詞を指定します。 次のいずれかになります。
値 | 意味 | 記号 |
---|---|---|
0 | 主動詞 | OLEIVERB_PRIMARY |
1 | 第 2 動詞 | (なし) |
- 1 | 編集用のアイテムを表示する | OLEIVERB_SHOW |
- 2 | 別のウィンドウでアイテムを編集する | OLEIVERB_OPEN |
- 3 | アイテムを非表示にする | OLEIVERB_HIDE |
通常、-1 値は別の動詞のエイリアスです。 開く編集がサポートされていない場合、-2 は -1 と同じ効果を持ちます。 その他の値については、Windows SDK IOleObject::D oVerb を参照してください。
解説
コンテナー アプリケーションが Microsoft Foundation クラス ライブラリを使用して書き込まれた場合、この関数は、対応するCOleClientItem
オブジェクトの COleClientItem::Activate メンバー関数が呼び出されたときに呼び出されます。 既定の実装では、主動詞またはOLEIVERB_SHOWが指定されている場合は OnShow メンバー関数を呼び出し、セカンダリ動詞またはOLEIVERB_OPENが指定されている場合は OnOpen 、OLEIVERB_HIDEが指定されている場合は OnHide を呼び出します。 iVerbが上記の動詞の 1 つでない場合、既定の実装呼び出しはOnShow
。
主動詞に項目が表示されない場合は、この関数をオーバーライドします。 たとえば、項目がサウンド録音で、その主動詞が Play の場合、アイテムを再生するためにサーバー アプリケーションを表示する必要はありません。
詳細については、Windows SDK の「 IOleObject::D oVerb 」を参照してください。
COleServerItem::OnDraw
OLE 項目をメタファイルにレンダリングするためにフレームワークによって呼び出されます。
virtual BOOL OnDraw(
CDC* pDC,
CSize& rSize) = 0;
パラメーター
pDC
項目を描画する CDC オブジェクトへのポインター。 表示コンテキストは属性表示コンテキストに自動的に接続されるため、属性関数を呼び出すことができますが、そうするとメタファイルデバイス固有になります。
rSize
メタファイルを描画するサイズ (HIMETRIC 単位)。
戻り値
項目が正常に描画された場合は 0 以外。それ以外の場合は 0。
解説
OLE 項目のメタファイル表現は、コンテナー アプリケーションで項目を表示するために使用されます。 コンテナー アプリケーションが Microsoft Foundation Class Library を使用して作成された場合、メタファイルは対応する COleClientItem オブジェクトの Draw メンバー関数によって使用されます。 既定の実装はありません。 指定したデバイス コンテキストに項目を描画するには、この関数をオーバーライドする必要があります。
COleServerItem::OnDrawEx
すべての描画に対してフレームワークによって呼び出されます。
virtual BOOL OnDrawEx(
CDC* pDC,
DVASPECT nDrawAspect,
CSize& rSize);
パラメーター
pDC
項目を描画する CDC オブジェクトへのポインター。 DC は属性 DC に自動的に接続されるため、属性関数を呼び出すことができますが、そうするとメタファイル デバイス固有になります。
nDrawAspect
DVASPECT 列挙型の値。 このパラメーターには、次のいずれかの値を指定できます。
DVASPECT_CONTENT項目は、コンテナー内の埋め込みオブジェクトとして表示できるように表されます。
DVASPECT_THUMBNAILアイテムは、閲覧ツールに表示できるように、"サムネイル" 表現でレンダリングされます。
DVASPECT_ICON項目はアイコンで表されます。
DVASPECT_DOCPRINT項目は、[ファイル] メニューの [印刷] コマンドを使用して印刷されたかのように表されます。
rSize
HIMETRIC 単位の項目のサイズ。
戻り値
項目が正常に描画された場合は 0 以外。それ以外の場合は 0。
解説
既定の実装では、DVASPECT が DVASPECT_CONTENT と等しい場合に OnDraw
が呼び出されます。それ以外の場合は失敗します。
DVASPECT_ICONやDVASPECT_THUMBNAILなど、DVASPECT_CONTENT以外の側面のプレゼンテーション データを提供するには、この関数をオーバーライドします。
COleServerItem::OnGetClipboardData
CopyToClipboard メンバー関数の呼び出しによってクリップボードに配置されるすべてのデータを含むCOleDataSource
オブジェクトを取得するためにフレームワークによって呼び出されます。
virtual COleDataSource* OnGetClipboardData(
BOOL bIncludeLink,
LPPOINT lpOffset,
LPSIZE lpSize);
パラメーター
bIncludeLink
リンク データをクリップボードにコピーする必要がある場合は、これを TRUE に設定します。 サーバー アプリケーションがリンクをサポートしていない場合は、これを FALSE に設定します。
lpOffset
オブジェクトの原点からのマウス カーソルのオフセット (ピクセル単位)。
lpSize
オブジェクトのサイズ (ピクセル単位)。
戻り値
クリップボード データを含む COleDataSource オブジェクトへのポインター。
解説
この関数の既定の実装は、 GetClipboardData を呼び出します。
COleServerItem::OnGetExtent
OLE 項目のサイズを HIMETRIC 単位で取得するためにフレームワークによって呼び出されます。
virtual BOOL OnGetExtent(
DVASPECT nDrawAspect,
CSize& rSize);
パラメーター
nDrawAspect
境界を取得する OLE アイテムの側面を指定します。 このパラメーターには、次のいずれかの値を指定できます。
DVASPECT_CONTENT項目は、コンテナー内の埋め込みオブジェクトとして表示できるように表されます。
DVASPECT_THUMBNAILアイテムは、閲覧ツールに表示できるように、"サムネイル" 表現でレンダリングされます。
DVASPECT_ICON項目はアイコンで表されます。
DVASPECT_DOCPRINT項目は、[ファイル] メニューの [印刷] コマンドを使用して印刷されたかのように表されます。
rSize
OLE アイテムのサイズを受け取る CSize
オブジェクトへの参照。
戻り値
正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。
解説
コンテナー アプリケーションが Microsoft Foundation クラス ライブラリを使用して記述された場合、この関数は、対応するCOleClientItem
オブジェクトの GetExtent メンバー関数が呼び出されたときに呼び出されます。 既定の実装では、何も行われません。 自分で実装する必要があります。 OLE アイテムのサイズに対する要求を処理するときに特別な処理を実行する場合は、この関数をオーバーライドします。
COleServerItem::OnHide
OLE 項目を非表示にするためにフレームワークによって呼び出されます。
virtual void OnHide();
解説
既定の呼び出し COleServerDoc::OnShowDocument( FALSE )
。 この関数は、OLE 項目が非表示になっていることをコンテナーに通知します。 OLE アイテムを非表示にするときに特別な処理を実行する場合は、この関数をオーバーライドします。
COleServerItem::OnInitFromData
pDataObjectの内容を使用して OLE 項目を初期化するためにフレームワークによって呼び出されます。
virtual BOOL OnInitFromData(
COleDataObject* pDataObject,
BOOL bCreation);
パラメーター
pDataObject
OLE アイテムを初期化するためのさまざまな形式のデータを含む OLE データ オブジェクトへのポインター。
bCreation
コンテナー アプリケーションによって新しく作成される OLE 項目を初期化するために関数が呼び出される場合は TRUE。 既存の OLE 項目の内容を置き換えるために関数が呼び出された場合は FALSE。
戻り値
正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。
解説
bCreation が TRUE の場合、コンテナーが現在の選択範囲に基づいて新しいオブジェクトの挿入を実装する場合に、この関数が呼び出されます。 選択したデータは、新しい OLE アイテムを作成するときに使用されます。 たとえば、スプレッドシート プログラムでセル範囲を選択し、[新しいオブジェクトの挿入] を使用して、選択した範囲内の値に基づいてグラフを作成します。 既定の実装では、何も行われません。 この関数をオーバーライドして、 pDataObject によって提供される形式から受け入れ可能な形式を選択し 指定されたデータに基づいて OLE 項目を初期化します。 これは、高度なオーバーライドが可能です。
詳細については、Windows SDK の「 IOleObject::InitFromData 」を参照してください。
COleServerItem::OnOpen
OLE 項目をインプレースではなく、サーバー アプリケーションの別のインスタンスに表示するためにフレームワークによって呼び出されます。
virtual void OnOpen();
解説
既定の実装では、OLE 項目を含むドキュメントを表示する最初のフレーム ウィンドウがアクティブになります。アプリケーションがミニサーバーの場合、既定の実装ではメイン ウィンドウが表示されます。 この関数は、OLE 項目が開かれたことをコンテナーに通知します。
OLE アイテムを開くときに特別な処理を実行する場合は、この関数をオーバーライドします。 これは特に、選択項目を開いたときにリンクに設定するリンクアイテムで一般的です。
詳細については、Windows SDK IOleClientSite::OnShowWindow を参照してください。
COleServerItem::OnQueryUpdateItems
現在のサーバー ドキュメント内のリンクされたアイテムが古くなっているかどうかを判断するために、フレームワークによって呼び出されます。
virtual BOOL OnQueryUpdateItems();
戻り値
ドキュメントに更新が必要な項目がある場合は 0 以外。すべての項目が最新の場合は 0。
解説
ソース ドキュメントが変更されているが、リンクアイテムが更新されていない場合、アイテムは古く、ドキュメントの変更を反映していません。
COleServerItem::OnRenderData
指定した形式のデータを取得するためにフレームワークによって呼び出されます。
virtual BOOL OnRenderData(
LPFORMATETC lpFormatEtc,
LPSTGMEDIUM lpStgMedium);
パラメーター
lpFormatEtc
情報が要求される形式を指定する FORMATETC 構造体を参照します。
lpStgMedium
データが返される STGMEDIUM 構造体を参照します。
戻り値
正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。
解説
指定された形式は、遅延レンダリング用の DelayRenderData または DelayRenderFileData メンバー関数を使って COleDataSource
オブジェクトに以前に配置されたものです。 この関数の既定の実装では OnRenderFileData または OnRenderGlobalData を呼び出します (指定されたストレージ メディアがファイルまたはメモリの場合)。 どちらの形式も指定されていない場合、既定の実装では 0 が返され、何も返されません。
lpStgMedium->tymed がTYMED_NULLの場合、STGMEDIUM は、lpFormatEtc->tymed で指定されたとおりに割り当てられ、入力されます。 TYMED_NULLしない場合は、STGMEDIUM にデータを入力する必要があります。
これは、高度なオーバーライドが可能です。 この関数をオーバーライドして、要求された形式とメディアでデータを提供します。 データによっては、代わりにこの関数の他のバージョンの 1 つをオーバーライドすることもできます。 データが小さく、サイズが固定されている場合は、OnRenderGlobalData
をオーバーライドします。 データがファイル内にある場合、またはサイズが可変の場合は、OnRenderFileData
をオーバーライドします。
詳細については、Windows SDK の「 IDataObject::GetData、 STGMEDIUM、 FORMATETC、および TYMED を参照してください。
COleServerItem::OnRenderFileData
ストレージ メディアがファイルである場合に、指定した形式のデータを取得するためにフレームワークによって呼び出されます。
virtual BOOL OnRenderFileData(
LPFORMATETC lpFormatEtc,
CFile* pFile);
パラメーター
lpFormatEtc
情報が要求される形式を指定する FORMATETC 構造体を参照します。
pFile
データがレンダリングされる CFile
オブジェクトを指します。
戻り値
正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。
解説
指定された形式は、遅延レンダリング用の DelayRenderData メンバー関数を使って COleDataSource
オブジェクトに以前に配置されたものです。 この関数の既定の実装では、単に FALSE が返されます。
これは、高度なオーバーライドが可能です。 この関数をオーバーライドして、要求された形式とメディアでデータを提供します。 データによっては、代わりにこの関数の他のバージョンの 1 つをオーバーライドすることもできます。 複数のストレージ メディアを処理する場合は、 OnRenderData をオーバーライドします。 データがファイル内にある場合、またはサイズが可変の場合は、OnRenderFileData をオーバーライドします。
詳細については、Windows SDK の「 IDataObject::GetData および FORMATETC を参照してください。
COleServerItem::OnRenderGlobalData
指定したストレージ メディアがグローバル メモリである場合に、指定した形式でデータを取得するために、フレームワークによって呼び出されます。
virtual BOOL OnRenderGlobalData(
LPFORMATETC lpFormatEtc,
HGLOBAL* phGlobal);
パラメーター
lpFormatEtc
情報が要求される形式を指定する FORMATETC 構造体を参照します。
phGlobal
データが返されるグローバル メモリへのハンドルを参照します。 メモリが割り当てられていない場合、このパラメーターは NULL にすることができます。
戻り値
正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。
解説
指定された形式は、遅延レンダリング用の DelayRenderData メンバー関数を使って COleDataSource
オブジェクトに以前に配置されたものです。 この関数の既定の実装では、単に FALSE が返されます。
phGlobal が NULL の場合は、新しい HGLOBAL を割り当て、phGlobal で返す必要があります。 それ以外の場合は、phGlobal によって指定された HGLOBAL にデータを入力する必要があります。 HGLOBAL に配置されるデータの量は、メモリ ブロックの現在のサイズを超えてはなりません。 また、ブロックをより大きなサイズに再割り当てすることはできません。
これは、高度なオーバーライドが可能です。 この関数をオーバーライドして、要求された形式とメディアでデータを提供します。 データによっては、代わりにこの関数の他のバージョンの 1 つをオーバーライドすることもできます。 複数のストレージ メディアを処理する場合は、 OnRenderData をオーバーライドします。 データがファイル内にある場合、またはサイズが可変の場合は、OnRenderFileData をオーバーライドします。
詳細については、Windows SDK の「 IDataObject::GetData および FORMATETC を参照してください。
COleServerItem::OnSetColorScheme
OLE アイテムの編集時に使用するカラー パレットを指定するために、フレームワークによって呼び出されます。
virtual BOOL OnSetColorScheme(const LOGPALETTE* lpLogPalette);
パラメーター
lpLogPalette
Windows LOGPALETTE 構造体へのポインター。
戻り値
カラー パレットを使用する場合は 0 以外。それ以外の場合は 0。
解説
コンテナー アプリケーションが Microsoft Foundation クラス ライブラリを使用して記述された場合、この関数は、対応するCOleClientItem
オブジェクトの IOleObject::SetColorScheme 関数が呼び出されたときに呼び出されます。 既定の実装では FALSE が返されます。 推奨パレットを使用する場合は、この関数をオーバーライドします。 サーバー アプリケーションは、推奨されるパレットを使用する必要はありません。
詳細については、Windows SDK の「 IOleObject::SetColorScheme 」を参照してください。
COleServerItem::OnSetData
OLE 項目のデータを指定したデータに置き換えるために、フレームワークによって呼び出されます。
virtual BOOL OnSetData(
LPFORMATETC lpFormatEtc,
LPSTGMEDIUM lpStgMedium,
BOOL bRelease);
パラメーター
lpFormatEtc
データの形式を指定する FORMATETC 構造体へのポインター。
lpStgMedium
データが存在する STGMEDIUM 構造体へのポインター。
bRelease
関数呼び出しの完了後にだれがストレージ メディアの所有権を持つかを示します。 呼び出し元は、ストレージ メディアに代わって割り当てられたリソースを解放する責任をだれが負うかを決定します。 呼び出し元は、bRelease を設定することでこれを行います。 bRelease が 0 以外の場合、サーバー項目は所有権を取得し、使用が完了したときにメディアを解放します。 bRelease が 0 の場合、呼び出し元は所有権を保持し、サーバー項目は呼び出し中にのみストレージ メディアを使用できます。
戻り値
正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。
解説
サーバー項目は、正常に取得されるまでデータの所有権を取得しません。 つまり、0 を返しても所有権は取得されません。 データ ソースが所有権を取得する場合は、ReleaseStgMedium 関数を呼び出してストレージ メディアを解放します。
既定の実装では、何も行われません。 OLE アイテムのデータを指定したデータに置き換えるには、この関数をオーバーライドします。 これは、高度なオーバーライドが可能です。
詳細については、Windows SDK の「 STGMEDIUM、 FORMATETC、および ReleaseStgMedium を参照してください。
COleServerItem::OnSetExtent
コンテナー ドキュメント内で使用可能な領域の量を OLE 項目に通知するために、フレームワークによって呼び出されます。
virtual BOOL OnSetExtent(
DVASPECT nDrawAspect,
const CSize& size);
パラメーター
nDrawAspect
境界を指定する OLE アイテムの側面を指定します。 このパラメーターには、次のいずれかの値を指定できます。
DVASPECT_CONTENT項目は、コンテナー内の埋め込みオブジェクトとして表示できるように表されます。
DVASPECT_THUMBNAILアイテムは、閲覧ツールに表示できるように、"サムネイル" 表現でレンダリングされます。
DVASPECT_ICON項目はアイコンで表されます。
DVASPECT_DOCPRINT項目は、[ファイル] メニューの [印刷] コマンドを使用して印刷されたかのように表されます。
size
OLE 項目の新しいサイズを指定する CSize 構造体。
戻り値
正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。
解説
コンテナー アプリケーションが Microsoft Foundation クラス ライブラリを使用して書き込まれた場合、この関数は、対応するCOleClientItem
オブジェクトの SetExtent メンバー関数が呼び出されたときに呼び出されます。 既定の実装では、nDrawAspect がDVASPECT_CONTENTの場合はm_sizeExtentメンバーを指定したサイズに設定します。それ以外の場合は 0 を返します。 アイテムのサイズを変更するときに特別な処理を実行するには、この関数をオーバーライドします。
COleServerItem::OnShow
OLE 項目を所定の位置に表示するようにサーバー アプリケーションに指示するために、フレームワークによって呼び出されます。
virtual void OnShow();
解説
この関数は、通常、コンテナー アプリケーションのユーザーがアイテムを作成するか、アイテムを表示する必要がある動詞 (Edit など) を実行するときに呼び出されます。 既定の実装では、インプレース アクティブ化が試行されます。 これが失敗した場合、関数は OnOpen
メンバー関数を呼び出して、OLE 項目を別のウィンドウに表示します。
OLE 項目が表示されたときに特別な処理を実行する場合は、この関数をオーバーライドします。
COleServerItem::OnUpdate
項目が変更されたときにフレームワークによって呼び出されます。
virtual void OnUpdate(
COleServerItem* pSender,
LPARAM lHint,
CObject* pHint,
DVASPECT nDrawAspect);
パラメーター
pSender
ドキュメントを変更したアイテムへのポインター。 NULL にすることができます。
lHint
変更に関する情報を格納します。
pHint
変更に関する情報を格納しているオブジェクトへのポインター。
nDrawAspect
DVASPECT 列挙型の値。 このパラメーターには、次のいずれかの値を指定できます。
DVASPECT_CONTENT項目は、コンテナー内の埋め込みオブジェクトとして表示できるように表されます。
DVASPECT_THUMBNAILアイテムは、閲覧ツールに表示できるように、"サムネイル" 表現でレンダリングされます。
DVASPECT_ICON項目はアイコンで表されます。
DVASPECT_DOCPRINT項目は、[ファイル] メニューの [印刷] コマンドを使用して印刷されたかのように表されます。
解説
既定の実装では、ヒントまたは送信者に関係なく、 NotifyChanged を呼び出します。
COleServerItem::OnUpdateItems
サーバー ドキュメント内のすべての項目を更新するためにフレームワークによって呼び出されます。
virtual void OnUpdateItems();
解説
既定の実装では、ドキュメント内のすべてのCOleClientItem
オブジェクトに対して UpdateLink を呼び出します。
COleServerItem::SetItemName
リンク アイテムを作成してその名前を設定するときに、この関数を呼び出します。
void SetItemName(LPCTSTR lpszItemName);
パラメーター
lpszItemName
項目の新しい名前へのポインター。
解説
名前はドキュメント内で一意である必要があります。 リンク アイテムを編集するためにサーバー アプリケーションが呼び出されると、アプリケーションはこの名前を使用してアイテムを検索します。 埋め込み項目に対してこの関数を呼び出す必要はありません。
関連項目
MFC サンプル HIERSVR
CDocItem クラス
階層図
COleClientItem クラス
COleServerDoc クラス
COleTemplateServer クラス