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 |
---|---|
|
Die OpenClipboard-Funktion , die in OleSetClipboard verwendet wird, ist fehlgeschlagen. |
|
Die EmptyClipboard-Funktion , die in OleSetClipboard verwendet wird, ist fehlgeschlagen. |
|
Fehler bei der CloseClipboard-Funktion , die in OleSetClipboard verwendet wird. |
|
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.
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) |