Share via


SHCreateDataObject 函式 (shlobj_core.h)

在父資料夾中建立資料物件。

語法

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

類型: void**

當這個方法成功傳回時,包含riid中要求的IDataObject介面指標。

傳回值

類型: HRESULT

如果此函式成功,則會傳回 S_OK。 否則,它會傳回 HRESULT 錯誤碼。

備註

實作 方法 IShellFolder::GetUIObjectOf 時,通常會呼叫此函式。 使用參數 riid) (要求介面標識碼的介面指標IID_IDataObject時,實作者可以在回應中使用 SHCreateDataObject 建立的物件上傳回介面指標。

此函式支援 CFSTR_SHELLIDLIST (也稱為HIDA) 剪貼簿格式,也支援透過 IDataObject::SetData的任意剪貼簿格式。 如需剪貼簿格式的詳細資訊,請參閱Shell剪貼簿格式。

新的數據物件旨在用於拖放等作業,其中數據會儲存在具有指定格式的剪貼簿中。

建議您使用在 Objbase.h 中定義的 IID_PPV_ARGS 宏來封裝 riidppv 參數。 此宏會根據 ppv 中值所指向的介面提供正確的 IID,這可消除 riid 中可能導致非預期結果的編碼錯誤的可能性。

規格需求

需求
最低支援的用戶端 Windows Vista [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2008 [僅限傳統型應用程式]
目標平台 Windows
標頭 shlobj_core.h (包含 Shlobj.h)
Dll Shell32.dll
API 集合 ext-ms-win-shell32-l1-2-2 (於 Windows 10 10.0.14393 版)

另請參閱

CIDLData_CreateFromIDArray