Freigeben über


OleSetClipboard-Funktion (ole2.h)

Platziert einen Zeiger auf ein bestimmtes Datenobjekt in der Zwischenablage. Dadurch wird der Zugriff auf das Datenobjekt für die OleGetClipboard-Funktion ermöglicht.

Syntax

HRESULT OleSetClipboard(
  [in] LPDATAOBJECT pDataObj
);

Parameter

[in] pDataObj

Zeiger auf die IDataObject-Schnittstelle für das Datenobjekt, aus dem die Daten abgerufen werden können, die in der Zwischenablage platziert werden sollen. Dieser Parameter kann NULL sein. in diesem Fall wird die Zwischenablage geleert.

Rückgabewert

Diese Funktion gibt bei Erfolg S_OK zurück. Weitere mögliche Werte sind:

Rückgabecode Beschreibung
CLIPBRD_E_CANT_OPEN
Die OpenClipboard-Funktion , die in OleSetClipboard verwendet wird, ist fehlgeschlagen.
CLIPBRD_E_CANT_EMPTY
Die EmptyClipboard-Funktion , die in OleSetClipboard verwendet wird, ist fehlgeschlagen.
CLIPBRD_E_CANT_CLOSE
Fehler bei der CloseClipboard-Funktion , die in OleSetClipboard verwendet wird.
CLIPBRD_E_CANT_SET
Die setClipboardData-Funktion , die in OleSetClipboard verwendet wird, ist fehlgeschlagen.

Hinweise

Wenn Sie eine Anwendung schreiben, die als Quelle eines Zwischenablagevorgangs fungieren kann, müssen Sie folgendes tun:

  • Erstellen Sie ein Datenobjekt (auf dem die IDataObject-Schnittstelle ist) für die Daten, die kopiert oder in die Zwischenablage ausgeschnitten werden. Bei diesem Objekt sollte es sich um dasselbe Objekt handeln, das in OLE-Drag-and-Drop-Vorgängen verwendet wird.
  • Rufen Sie OleSetClipboard auf, um den IDataObject-Zeiger in der Zwischenablage zu platzieren, damit die OleGetClipboard-Funktion darauf zugreifen kann. OleSetClipboard ruft auch die IUnknown::AddRef-Methode für Ihr Datenobjekt auf.
  • Wenn Sie möchten, lassen Sie das Datenobjekt frei, nachdem Sie es in der Zwischenablage platziert haben, um den IUnknown::AddRef-Zähler in Ihrer Anwendung freizugeben.
  • Wenn der Benutzer Daten ausschneidet (sie aus dem Dokument löscht und in die Zwischenablage legt), entfernen Sie die Daten aus dem Dokument.
Alle Formate werden in der Zwischenablage mit verzögertem Rendering angeboten (die Zwischenablage enthält nur einen Zeiger auf das Datenobjekt, es sei denn, ein Aufruf von OleFlushClipboard rendert die Daten in der Zwischenablage). Die für die OLE 1-Kompatibilität erforderlichen Formate werden aus den vorhandenen OLE 2-Formaten synthetisiert und auch in die Zwischenablage eingefügt.

Die OleSetClipboard-Funktion weist einem internen OLE-Fensterhandle den Besitz der Zwischenablage zu. Die Verweisanzahl des Datenobjekts wird um 1 erhöht, um verzögertes Rendering zu ermöglichen. Die Verweisanzahl wird durch einen Aufruf der OleFlushClipboard-Funktion oder durch einen nachfolgenden Aufruf von OleSetClipboard verringert, der NULL als Parameterwert angibt (wodurch die Zwischenablage gelöscht wird).

Wenn eine Anwendung die Zwischenablage öffnet (entweder direkt oder indirekt durch Aufrufen der OpenClipboard-Funktion ), kann die Zwischenablage von keiner anderen Anwendung verwendet werden, bis sie geschlossen wird. Wenn die Zwischenablage derzeit von einer anderen Anwendung geöffnet ist, schlägt OleSetClipboard fehl. Das interne OLE-Fensterhandle erfüllt WM_RENDERFORMAT Nachrichten, indem sie an die IDataObject-Implementierung für das Datenobjekt delegiert werden, das sich in der Zwischenablage befindet.

Wenn Sie NULL als Parameterwert für OleSetClipboard angeben, wird die aktuelle Zwischenablage geleert. Wenn der Inhalt der Zwischenablage das Ergebnis eines vorherigen OleSetClipboard-Aufrufs ist und die Zwischenablage freigegeben wurde, wird der IDataObject-Zeiger , der an den vorherigen Aufruf übergeben wurde, freigegeben. Der Besitzer der Zwischenablage sollte dies als Signal verwenden, dass sich die zuvor angebotenen Daten nicht mehr in der Zwischenablage befinden.

Wenn Sie die Daten nach dem Schließen Ihrer Anwendung in der Zwischenablage lassen müssen, sollten Sie OleFlushClipboard aufrufen, anstatt OleSetClipboard mit einem NULL-Parameterwert aufzurufen.

Anforderungen

   
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile ole2.h
Bibliothek Ole32.lib
DLL Ole32.dll
APIs ext-ms-win-com-ole32-l1-1-5 (eingeführt in Windows 10, Version 10.0.15063)

Weitere Informationen

OleFlushClipboard

OleGetClipboard

OleIsCurrentClipboard