OleSetClipboard, fonction (ole2.h)

Place un pointeur vers un objet de données spécifique dans le Presse-papiers. Cela rend l’objet de données accessible à la fonction OleGetClipboard .

Syntaxe

HRESULT OleSetClipboard(
  [in] LPDATAOBJECT pDataObj
);

Paramètres

[in] pDataObj

Pointeur vers l’interface IDataObject sur l’objet de données à partir duquel les données à placer dans le Presse-papiers peuvent être obtenues. Ce paramètre peut être NULL ; auquel cas le Presse-papiers est vidé.

Valeur retournée

Cette fonction retourne S_OK en cas de réussite. Les autres valeurs possibles sont les suivantes.

Code de retour Description
CLIPBRD_E_CANT_OPEN
Échec de la fonction OpenClipboard utilisée dans OleSetClipboard .
CLIPBRD_E_CANT_EMPTY
Échec de la fonction EmptyClipboard utilisée dans OleSetClipboard .
CLIPBRD_E_CANT_CLOSE
Échec de la fonction CloseClipboard utilisée dans OleSetClipboard .
CLIPBRD_E_CANT_SET
Échec de la fonction SetClipboardData utilisée dans OleSetClipboard .

Notes

Si vous écrivez une application qui peut servir de source à une opération du Presse-papiers, vous devez effectuer les opérations suivantes :

  • Créez un objet de données (sur lequel est l’interface IDataObject ) pour les données copiées ou coupées dans le Presse-papiers. Cet objet doit être le même que celui utilisé dans les opérations de glisser-déplacer OLE.
  • Appelez OleSetClipboard pour placer le pointeur IDataObject dans le Presse-papiers, afin qu’il soit accessible à la fonction OleGetClipboard . OleSetClipboard appelle également la méthode IUnknown::AddRef sur votre objet de données.
  • Si vous le souhaitez, relâchez l’objet de données après l’avoir placé dans le Presse-papiers pour libérer le compteur IUnknown::AddRef dans votre application.
  • Si l’utilisateur coupe des données (les supprime du document et les place dans le Presse-papiers), supprimez les données du document.
Tous les formats sont proposés dans le Presse-papiers à l’aide d’un rendu différé (le Presse-papiers contient uniquement un pointeur vers l’objet de données, sauf si un appel à OleFlushClipboard restitue les données dans le Presse-papiers). Les formats nécessaires à la compatibilité OLE 1 sont synthétisés à partir des formats OLE 2 présents et sont également placés dans le Presse-papiers.

La fonction OleSetClipboard affecte la propriété du Presse-papiers à un handle de fenêtre OLE interne. Le nombre de références de l’objet de données est augmenté de 1, pour activer le rendu différé. Le nombre de références est réduit par un appel à la fonction OleFlushClipboard ou par un appel ultérieur à OleSetClipboard spécifiant NULL comme valeur de paramètre (ce qui efface le Presse-papiers).

Lorsqu’une application ouvre le Presse-papiers (directement ou indirectement en appelant la fonction OpenClipboard ), le Presse-papiers ne peut pas être utilisé par une autre application tant qu’il n’est pas fermé. Si le Presse-papiers est actuellement ouvert par une autre application, OleSetClipboard échoue. Le handle de fenêtre OLE interne satisfait WM_RENDERFORMAT messages en les déléguant à l’implémentation IDataObject sur l’objet de données qui se trouve dans le Presse-papiers.

La spécification de NULL comme valeur de paramètre pour OleSetClipboard vide le Presse-papiers actuel. Si le contenu du Presse-papiers est le résultat d’un appel OleSetClipboard précédent et que le Presse-papiers a été libéré, le pointeur IDataObject qui a été passé à l’appel précédent est libéré. Le propriétaire du Presse-papiers doit l’utiliser comme un signal indiquant que les données qu’il proposait précédemment ne sont plus dans le Presse-papiers.

Si vous devez laisser les données dans le Presse-papiers après la fermeture de votre application, vous devez appeler OleFlushClipboard au lieu d’appeler OleSetClipboard avec une valeur de paramètre NULL .

Spécifications

   
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête ole2.h
Bibliothèque Ole32.lib
DLL Ole32.dll
Ensemble d’API ext-ms-win-com-ole32-l1-1-5 (introduit dans Windows 10, version 10.0.15063)

Voir aussi

OleFlushClipboard

OleGetClipboard

OleIsCurrentClipboard