在父資料夾中建立資料物件。
語法
SHSTDAPI SHCreateDataObject(
[in, optional] PCIDLIST_ABSOLUTE pidlFolder,
[in] UINT cidl,
[in, optional] PCUITEMID_CHILD_ARRAY apidl,
[in, optional] IDataObject *pdtInner,
[in] REFIID riid,
[out] void **ppv
);
參數
[in, optional] pidlFolder
類型: PCIDLIST_ABSOLUTE
包含資料物件之父資料夾之 ITEMIDLIST (PIDL) 指標。
[in] cidl
類型: UINT
apidl 參數中指定的檔案物件或子資料夾數目。
[in, optional] apidl
類型: PCUITEMID_CHILD_ARRAY
常數 ITEMIDLIST 結構的指標陣列,每個結構都會唯一識別相對於父資料夾的檔案物件或子資料夾。 每個專案識別碼清單都必須只包含一個 SHITEMID 結構,後面接著終止零。
[in, optional] pdtInner
類型: IDataObject*
介面 IDataObject 的指標。 此參數可以是 NULL。 只有在建立的資料物件需要支援建立時指派的預設格式以外的其他 FORMATETC 剪貼簿格式時,才指定 pdtInner。 或者,呼叫方法 IDataObject::SetData,並在參數 pFormatetc 中傳遞的 FORMATETC 結構中指定格式,以使用非預設剪貼簿格式填入所建立的數據物件。
[in] riid
類型: REFIID
要透過 ppv 擷取的介面 IID 的參考。 這必須是IID_IDataObject。
[out] ppv
類型: 無效**
當這個方法成功傳回時,包含 riid 中要求的 IDataObject 介面指標。
返回值
類型:HRESULT
如果此函式成功,則會傳回 S_OK。 否則,它會傳回 HRESULT 錯誤碼。
備註
此函式通常會在實作方法 IShellFolder::GetUIObjectOf 時呼叫。 當要求介面標識碼 IID_IDataObject 的介面指標時 (使用參數 riid) ,實作者可以在回應中使用 SHCreateDataObject 建立之物件上傳回介面指標。
此函式支援 CFSTR_SHELLIDLIST (也稱為 HIDA) 剪貼簿格式,而且也透過 IDataObject::SetData 對任意剪貼簿格式提供一般支援。 如需剪貼簿格式的詳細資訊,請參閱 殼層剪貼簿格式。
新的資料物件旨在用於拖放等操作,其中資料以給定格式儲存在剪貼簿中。
建議您使用 Objbase.h 中定義的 IID_PPV_ARGS 巨集來封裝 riid 和 ppv 參數。 此巨集會根據 ppv 值所指向的介面提供正確的 IID,這可消除 riid 中可能造成非預期結果的編碼錯誤。
需求
| Requirement | 價值觀 |
|---|---|
| 最低支援的用戶端 | Windows Vista [僅限傳統型應用程式] |
| 支援的最低伺服器 | Windows Server 2008 [僅限傳統型應用程式] |
| 目標平臺 | 窗戶 |
| Header | shlobj_core.h(包括 Shlobj.h) |
| Library | OneCore.Lib |
| DLL | Shell32.dll |
| API 集 | ext-ms-win-shell-shell32-l1-2-2 (Windows 10 版本 10.0.14393 中引進) |