Partager via


Fonction SHCreateDataObject (shlobj_core.h)

Crée un objet de données dans un dossier parent.

Syntaxe

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
);

Paramètres

[in, optional] pidlFolder

Type : PCIDLIST_ABSOLUTE

Pointeur vers un ITEMIDLIST (PIDL) du dossier parent qui contient l’objet de données.

[in] cidl

Type : UINT

Nombre d’objets de fichier ou de sous-dossiers spécifiés dans le paramètre apidl .

[in, optional] apidl

Type : PCUITEMID_CHILD_ARRAY

Tableau de pointeurs vers des structures ITEMIDLIST constantes, chacun d’entre eux identifiant de manière unique un objet de fichier ou un sous-dossier par rapport au dossier parent. Chaque liste d’identificateurs d’élément doit contenir exactement une structure SHITEMID suivie d’un zéro de fin.

[in, optional] pdtInner

Type : IDataObject*

Pointeur vers l’interface IDataObject. Ce paramètre peut être NULL. Spécifiez pdtInner uniquement si l’objet de données créé doit prendre en charge des formats de Presse-papiers FORMATETC supplémentaires au-delà des formats par défaut qui lui sont attribués lors de la création. Vous pouvez également prendre en charge le remplissage de l’objet de données créé à l’aide de formats de Presse-papiers autres que les formats par défaut en appelant la méthode IDataObject ::SetData et en spécifiant le format dans la structure FORMATETC transmise dans le paramètre pFormatetc.

[in] riid

Type : REFIID

Référence à l’IID de l’interface à récupérer via ppv. Cela doit être IID_IDataObject.

[out] ppv

Type : void**

Lorsque cette méthode retourne correctement, contient le pointeur d’interface IDataObject demandé dans riid.

Valeur retournée

Type : HRESULT

Si cette fonction réussit, elle retourne S_OK. Sinon, elle retourne un code d’erreur HRESULT.

Remarques

Cette fonction est généralement appelée lors de l’implémentation de la méthode IShellFolder ::GetUIObjectOf. Lorsqu’un pointeur d’interface de l’ID d’interface IID_IDataObject est demandé (à l’aide du paramètre riid), l’implémenteur peut retourner le pointeur d’interface sur l’objet créé avec SHCreateDataObject en réponse.

Cette fonction prend en charge le format de Presse-papiers CFSTR_SHELLIDLIST (également appelé HIDA) et prend également en charge générique les formats de Presse-papiers arbitraires via IDataObject ::SetData. Pour plus d’informations sur les formats du Presse-papiers, consultez Formats du Presse-papiers shell.

Le nouvel objet de données est destiné à être utilisé dans des opérations telles que le glisser-déplacer, dans lequel les données sont stockées dans le Presse-papiers avec un format donné.

Nous vous recommandons d’utiliser la macro IID_PPV_ARGS , définie dans Objbase.h, pour empaqueter les paramètres riid et ppv . Cette macro fournit l’IID correct en fonction de l’interface pointée vers la valeur dans ppv, ce qui élimine la possibilité d’une erreur de codage dans riid qui pourrait entraîner des résultats inattendus.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2008 [applications de bureau uniquement]
Plateforme cible Windows
En-tête shlobj_core.h (inclure Shlobj.h)
DLL Shell32.dll
Ensemble d’API ext-ms-win-shell-shell32-l1-2-2 (introduit dans Windows 10, version 10.0.14393)

Voir aussi

CIDLData_CreateFromIDArray