Datenübertragungsschnittstellen
Die IDataObject-Schnittstelle bietet Datenverbrauchern Methoden zum Abrufen und Festlegen der Daten eines Objekts, zum Bestimmen der vom Objekt unterstützten Formate sowie zum Registrieren und Empfangen von Benachrichtigungen, wenn sich Daten im Objekt ändern. Beim Abrufen von Daten kann ein Aufrufer das Format angeben, in dem die Daten gerendert werden sollen. Die Quelle der Daten bestimmt jedoch das Speichermedium, das in einem vom Aufrufer bereitgestellten Out-Parameter zurückgegeben wird.
IDataObject stellt alle Tools bereit, die Sie zum Implementieren von Windows-Zwischenablageübertragungen oder Verbunddokumentübertragungen in Ihren Anwendungen benötigen. Wenn Sie auch Drag-and-Drop-Übertragungen unterstützen möchten, müssen Sie die IDropSource - und IDropTarget-Schnittstellen zusammen mit IDataObject implementieren.
Die IDataObject-Schnittstelle in Kombination mit OLE-Zwischenablage-APIs bietet alle Funktionen der Windows-Zwischenablage-APIs. Es ist im Allgemeinen nicht erforderlich, beide Zwischenablage-APIs zu verwenden. Datenlieferanten, die Drag-and-Drop-Übertragungen oder ZUSAMMENGESETZTE OLE-Dokumente unterstützen, müssen die IDataObject-Schnittstelle implementieren. Wenn Ihre Anwendung jetzt nur Zwischenablageübertragungen unterstützt, sie aber drag and drop oder zusammengesetzte Dokumente in späteren Releases hinzufügen möchten, sollten Sie jetzt IDataObject und die OLE-Zwischenablage-APIs implementieren, um die Zeit für die Neucodierung und das Debuggen später zu minimieren. Sie können auch IDataObject implementieren, um andere Übertragungsmedien als den globalen Arbeitsspeicher zu verwenden.
In der folgenden Tabelle sind die zu verwendenden Daten zusammengefasst, je nachdem, welche Arten der Datenübertragung unterstützt werden sollen:
So unterstützen Sie | Zweck |
---|---|
Zusammengesetzte Dokumente |
Idataobject |
Drag and Drop-Übertragungen |
IDataObject, IDropSource, IDropTarget, DoDragDrop (oder das entsprechende Objekt) |
Zwischenablageübertragungen ausschließlich unter Verwendung des globalen Arbeitsspeichers |
Zwischenablage-API |
Zwischenablageübertragungen unter Verwendung anderer Austauschmedien als des globalen Arbeitsspeichers. |
Idataobject |
Zwischenablageübertragungen jetzt, aber später per Ziehen und Ablegen oder zusammengesetzter Dokumente |
IDataObject und die oben aufgeführten Schnittstellen und Funktionen für "Drag and Drop Transfers" |
Wenn ein Benutzer einen Datenübertragungsvorgang initiiert, erstellt die Quellanwendung eine instance von IDataObject und stellt die Daten in einem oder mehreren Formaten zur Verfügung. In einer Zwischenablageübertragung ruft die Anwendung die OleSetClipboard-Funktion auf, um einen Datenobjektzeiger an OLE zu übergeben. (OleSetClipboard bietet auch Standardmäßige Zwischenablagedatenformate für OLE-Anwendungen, Version 1 und Nicht-OLE-Anwendungen.) In einer Drag-and-Drop-Übertragung ruft die Anwendung stattdessen die DoDragDrop-Funktion auf.
Auf der Empfangenden Seite der Übertragung empfängt das Ziel den IDataObject-Zeiger entweder als Argument für einen Aufruf von IDropTarget::D rop oder durch Aufrufen der OleSetClipboard-Funktion , je nachdem, ob die Übertragung per Drag and Drop oder in der Zwischenablage erfolgt. Nachdem dieser Zeiger abgerufen wurde, ruft das Ziel IDataObject::EnumFormatEtc auf, um zu erfahren, welche Formate zum Abrufen verfügbar sind und auf welchen Medientypen sie abgerufen werden können. Mit diesen Informationen ausgestattet, fordert die empfangende Anwendung die Daten mit einem Aufruf von IDataObject::GetData an.