IDataObject::GetDataHere メソッド (objidl.h)
ソース データ オブジェクトからデータを取得するために、データ コンシューマーによって呼び出されます。 このメソッドは、呼び出し元が指定したストレージ メディアを割り当てて解放する必要がある点で 、GetData メソッドとは異なります。
構文
HRESULT GetDataHere(
[in] FORMATETC *pformatetc,
[in, out] STGMEDIUM *pmedium
);
パラメーター
[in] pformatetc
データを渡すときに使用する形式、中、およびターゲット デバイスを定義する FORMATETC 構造体へのポインター。 1 つのメディアのみを tymed で指定でき、有効な値は TYMED_ISTORAGE、TYMED_ISTREAM、TYMED_HGLOBAL、またはTYMED_FILEのみです。
[in, out] pmedium
転送されるデータを含むストレージ メディアを定義する STGMEDIUM 構造体へのポインター。 メディアは呼び出し元によって割り当てられ、 GetDataHere によって入力される必要があります。 呼び出し元は、メディアを解放する必要もあります。 このメソッドの実装では、このパラメーターが指す STGMEDIUM 構造体の punkForRelease メンバーに対して常に NULL 値を指定する必要があります。
戻り値
このメソッドは、成功したS_OKを返します。 その他の使用可能な値は次のとおりです。
リターン コード | 説明 |
---|---|
|
lindex の値が無効です。現在、-1 のみがサポートされています。 |
|
pformatetc の値が無効です。 |
|
tymed 値が無効です。 |
|
dwAspect 値が無効です。 |
|
オブジェクト アプリケーションが実行されていません。 |
|
メディアを割り当てるときにエラーが発生しました。 |
|
予期しないエラーが発生しました。 |
|
dwDirection パラメーターが無効です。 |
|
この操作で使用できるメモリが不足していました。 |
解説
GetDataHere メソッドは IDataObject::GetData に似ていますが、呼び出し元は pmedium で指定されたメディアの割り当てと解放の両方を行う必要があります。 GetDataHere はFORMATETC 構造体で記述されているデータをレンダリングし、その呼び出し元が提供する STGMEDIUM 構造体にデータをコピーします。 たとえば、メディアがTYMED_HGLOBALされている場合、このメソッドはメディアのサイズを変更したり、新しい hGlobal を割り当てることはできません。
メタファイルなどの GDI 型など、 GetDataHere の呼び出しでは一部のメディアが適切ではありません。 GetDataHere メソッドは、呼び出し元が提供するメタファイルにデータを格納できません。 一般に、このメソッドでサポートする必要がある記憶域メディアは、TYMED_ISTORAGE、TYMED_ISTREAM、およびTYMED_FILEのみです。
転送メディアがストリームの場合、OLE では、データが返される場所とストリームのシーク ポインターの位置を想定します。 GetData 呼び出しでは、返されるデータはストリーム位置 0 からストリームの現在のシーク ポインター (つまり、終了時の位置) の直前までです。 GetDataHere の場合、返されるデータは、エントリのストリーム位置から、終了時の位置の直前までです。
要件
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | objidl.h |