IDataObject::SetData 方法 (objidl.h)

由包含資料來源的物件呼叫,以將資料傳送至實作此方法的物件。

語法

HRESULT SetData(
  [in] FORMATETC *pformatetc,
  [in] STGMEDIUM *pmedium,
  [in] BOOL      fRelease
);

參數

[in] pformatetc

FORMATETC結構的指標,定義資料物件在解譯儲存媒體中包含的資料時所使用的格式。

[in] pmedium

STGMEDIUM結構的指標,定義要傳遞資料的儲存媒體。

[in] fRelease

如果 為 TRUE,則呼叫的資料物件會實作 SetData,在呼叫傳回之後擁有儲存媒體。 這表示它必須在呼叫 ReleaseStgMedium 函式之後釋放媒體。 如果 為 FALSE,呼叫端會保留儲存媒體的擁有權,而呼叫的資料物件只會在呼叫期間使用儲存媒體。

傳回值

此方法會在成功時傳回S_OK。 其他可能的值包括下列專案。

傳回碼 描述
DV_E_LINDEX
lindex的值無效;目前僅支援 -1。
DV_E_FORMATETC
pformatetc的值無效。
DV_E_TYMED
tymed值無效。
DV_E_DVASPECT
dwAspect值無效。
OLE_E_NOTRUNNING
物件應用程式未執行。
E_FAIL
作業失敗。
E_UNEXPECTED
已發生未預期的錯誤。
E_INVALIDARG
dwDirection值無效。
E_OUTOFMEMORY
此作業的記憶體不足。

備註

SetData 可讓另一個物件嘗試將資料傳送至實作的資料物件。 如果資料物件支援從另一個物件接收資料,則資料物件會實作這個方法。 如果不支援此功能,則應該實作以傳回E_NOTIMPL。

呼叫端會配置 pmedium 參數所指示的儲存媒體,其中會傳遞資料。 呼叫的資料物件在成功收到資料且未傳回錯誤碼之前,不會取得資料的擁有權。 fRelease參數的值表示呼叫傳回之後媒體的擁有權。 FALSE 表示呼叫端仍然擁有媒體,而且資料物件在呼叫期間只使用它; TRUE 表示資料物件現在擁有它,而且在不再需要資料物件時必須釋放它。

pformatetcpmedium參數中指定的媒體類型必須相同。 例如,一個不能是全域控制碼,另一個是資料流程。

需求

   
最低支援的用戶端 Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平台 Windows
標頭 objidl.h

另請參閱

IDataObject