Datenübertragungsschnittstellen

Die IDataObject-Schnittstelle stellt Datenverbrauchern Methoden zum Abrufen und Festlegen der Daten eines Objekts bereit, bestimmt, welche Formate das Objekt unterstützt, und registriert sich für und empfängt Benachrichtigungen, wenn sich Daten im Objekt ändern. Beim Abrufen von Daten kann ein Aufrufer das Format angeben, in dem die Daten gerendert werden. Die Quelle der Daten bestimmt jedoch das Speichermedium, das in einem vom Aufrufer bereitgestellten out-Parameter zurückgegeben wird.

Allein stellt IDataObject alle Tools zur Verfügung, die Sie zum Implementieren Windows Übertragungen von Zwischenablage oder verbunddokumenten in Ihren Anwendungen benötigen. If you also want to support drag and drop transfers, you need to implement the IDropSource and IDropTarget interfaces along with IDataObject.

Die IDataObject-Schnittstelle in Kombination mit OLE-Zwischenablage-APIs bietet alle Funktionen der Windows-APIs für die Zwischenablage. Es ist im Allgemeinen nicht erforderlich, beide Zwischenablage-APIs zu verwenden. Data suppliers that support either drag and drop transfers or OLE compound documents must implement the IDataObject interface. If your application supports only clipboard transfers now, but you intend to add drag and drop or compound documents in later releases, you may want to implement IDataObject and the OLE clipboard APIs now in order to minimize the amount of time spent recoding and debugging later. Möglicherweise möchten Sie auch IDataObject implementieren, um andere Übertragungsmedien als den globalen Arbeitsspeicher zu verwenden.

In der folgenden Tabelle sind die zu verwendenden Datenübertragungen zusammengefasst, je nachdem, welche Arten von Datenübertragungen Unterstützt werden sollen:

So unterstützen Sie Zweck
Verbunddokumente
Idataobject
Drag & Drop-Übertragungen
IDataObject, IDropSource, IDropTarget, DoDragDrop (oder das Äquivalent)
Übertragungen der Zwischenablage ausschließlich mithilfe des globalen Arbeitsspeichers
Zwischenablage-API
Zwischenablageübertragungen mit anderen Exchange-Medien als dem globalen Arbeitsspeicher.
Idataobject
Zwischenablageübertragungen jetzt, aber drag & drop oder zusammengesetzte Dokumente später
IDataObject and the interfaces and function listed above for "Drag and drop transfers"

Wenn ein Benutzer einen Datenübertragungsvorgang initiiert, erstellt die Quellanwendung eine Instanz von IDataObject und stellt die Daten dadurch in mindestens einem Format zur Verfügung. In einer Zwischenablageübertragung ruft die Anwendung die OleSetClipboard-Funktion auf, um einen Datenobjektzeiger an OLE zu übergeben. (OleSetClipboard also offers standard clipboard data formats for both OLE version 1 and non-OLE applications.) In a drag and drop transfer, the application calls the DoDragDrop function instead.

On the receiving side of the transfer, the destination receives the IDataObject pointer either as an argument to an invocation of IDropTarget::Drop or by calling the OleSetClipboard function, depending on whether the transfer is by means of drag and drop or the clipboard. Nach dem Abrufen dieses Zeigers ruft das Ziel IDataObject::EnumFormatEtc auf, um zu erfahren, welche Formate zum Abrufen verfügbar sind und welche Medientypen sie erhalten werden können. Mit diesen Informationen fordert die empfangende Anwendung die Daten mit einem Aufruf von IDataObject::GetData an.

Datenübertragung