IDataObject::GetDataHere 方法 (objidl.h)
由資料取用者呼叫,以從來源資料物件取得資料。 這個方法與 GetData 方法不同,因為呼叫端必須配置並釋放指定的儲存媒體。
語法
HRESULT GetDataHere(
[in] FORMATETC *pformatetc,
[in, out] STGMEDIUM *pmedium
);
參數
[in] pformatetc
FORMATETC結構的指標,定義傳遞資料時要使用的格式、中型和目標裝置。 只有一個媒體可以在 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。
某些媒體不適用於 GetDataHere的呼叫,包括 GDI 類型,例如中繼檔。 GetDataHere方法無法將資料放入呼叫端提供的中繼檔。 一般而言,此方法中唯一支援的儲存媒體是TYMED_ISTORAGE、TYMED_ISTREAM和TYMED_FILE。
當傳輸媒體是資料流程時,OLE 會假設要傳回資料的位置,以及資料流程的搜尋指標的位置。 在 GetData 呼叫中,傳回的資料是從資料流程位置零到資料流程目前搜尋 (指標之前,也就是結束位置) 。 針對 GetDataHere,傳回的資料會從進入的資料流程位置到結束位置之前。
需求
最低支援的用戶端 | Windows 2000 專業版 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | objidl.h |