Zwischenablage: Daten kopieren und einfügen
Dieses Thema beschreibt die minimale Arbeit, die erforderlich ist, um das Kopieren zu und Einfügen aus der Zwischenablage in der OLE-Anwendung zu implementieren. Es wird empfohlen, die Datenobjekte und Datenquellen (OLE) Themen lesen, bevor Sie fortfahren.
Bevor Sie das Kopieren oder Einfügen implementieren können, müssen Sie zuerst Funktionen bereitstellen, um die Zwischenablage, Schnitt- und Pastenoptionen im Menü Bearbeiten zu behandeln.
Kopieren oder Schnittparameter
Um Daten in die Zwischenablage kopieren
Bestimmen Sie, ob die Daten ist oder systemeigene Daten ist ein verknüpftes oder eingebettetes Element kopiert wird.
Wenn die Daten eingebettet bzw. verknüpft werden, rufen Sie einen Zeiger auf das COleClientItem-Objekt, das ausgewählt wurde.
Wenn die Daten angehören und die Anwendung ein Server ist, erstellen Sie ein neues Objekt, das von COleServerItem abgeleitet wird, das die ausgewählten Daten enthält. Andernfalls erstellen Sie ein COleDataSource-Objekt für die Daten.
Rufen Sie die ausgewählten CopyToClipboard-Memberfunktion des Elements auf.
Wenn der Benutzer ein Ausschneidevorgang anstelle eines Kopiervorgangs auswählte, löschen Sie die ausgewählten Daten von der Anwendung.
Um ein Beispiel dieser Sequenz zu finden, lesen Sie die OnEditCut und OnEditCopy in den Funktionen auch OCLIENT und HIERSVR MFC-OLE. Beachten Sie, dass diese Beispiele einen Zeiger auf den derzeit ausgewählten Daten warten, sodass Schritt 1 bereits abgeschlossen.
Einfügen von Daten
Daten einzufügen ist schwieriger, als es kopiert, da Sie den Stil auswählen müssen, um zu verwenden, wenn Sie die Daten in die Anwendung einfügen.
Um Daten aus der Zwischenablage einfügen
In der Ansichtsklasse die OnEditPaste, um von Benutzern zu behandeln, die die Pastenoption im Menü Bearbeiten auswählen.
In der OnEditPaste-Funktion erstellen Sie ein COleDataObject-Objekt und rufen Sie dessen AttachClipboard-Memberfunktion auf, um das Objekt an Daten in der Zwischenablage zu verknüpfen.
Rufen Sie COleDataObject::IsDataAvailable auf, um zu überprüfen, ob ein bestimmtes Format verfügbar ist.
Alternativ können Sie COleDataObject::BeginEnumFormats verwenden, um nach anderen Formaten finden, bis Sie finden ein, das die meisten Ihrer Anwendung verarbeiten.
Führen Sie das Einfügen des Stils aus.
Ein Beispiel, wie dies funktioniert, finden Sie in der Implementierung OnEditPaste in den Memberfunktionen Ansichtsklassen, die in den auch OCLIENT und HIERSVR MFC-OLE definiert werden.
Tipp
Der Hauptvorteil des Trennens des Einfügevorgangs in seine eigene Features ist, dass die gleiche Pastencode verwendet werden, wenn Daten in die Anwendung während eines Drag & Drop-Vorgangs abgelegt werden.Wie im OCLIENT-Menü und in HIERSVR, kann die OnDrop-Funktion auch DoPasteItem aufrufen und Code wiederverwenden, der zum Implementieren Einfügevorgängen geschrieben wird.
Um die Inhalte einfügen-Option im Menü Bearbeiten zu behandeln, finden Sie im Thema Dialogfelder in OLE.