Freigeben über


Zwischenablage: Daten kopieren und einfügen

Dieses Thema beschreibt den Mindestaufwand, der für die Implementierung des Kopierens in die Zwischenablage und des Einfügens aus der Zwischenablage in Ihrer OLE-Anwendung erforderlich ist. Es wird empfohlen, die Themen "Data Objects and Data Sources" (OLE) vor dem Fortfahren zu lesen.

Bevor Sie kopieren oder einfügen können, müssen Sie zunächst Funktionen bereitstellen, um die Optionen "Kopieren", "Ausschneiden" und "Einfügen" im Menü "Bearbeiten" zu behandeln.

Kopieren oder Ausschneiden von Daten

So kopieren Sie Daten in die Zwischenablage

  1. Bestimmen Sie, ob es sich bei den zu kopierenden Daten um systemeigene Daten oder um ein eingebettetes oder verknüpftes Element handelt.

    • Wenn die Daten eingebettet oder verknüpft sind, rufen Sie einen Zeiger auf das COleClientItem objekt ab, das ausgewählt wurde.

    • Wenn die Daten systemintern sind und die Anwendung ein Server ist, erstellen Sie ein neues Objekt, das von COleServerItem den ausgewählten Daten abgeleitet wurde. Erstellen Sie andernfalls ein COleDataSource Objekt für die Daten.

  2. Rufen Sie die CopyToClipboard-Funktion des ausgewählten Elements auf.

  3. Wenn der Benutzer einen Ausschneiden-Vorgang anstelle eines Kopiervorgangs ausgewählt hat, löschen Sie die ausgewählten Daten aus Ihrer Anwendung.

Um ein Beispiel für diese Sequenz zu sehen, schauen Sie sich die Funktionen OnEditCut und OnEditCopy in den MFC OLE-Beispielprogrammen OCLIENT und HIERSVR an. Beachten Sie, dass diese Beispiele einen Zeiger auf die aktuell ausgewählten Daten beibehalten, sodass Schritt 1 bereits abgeschlossen ist.

Einfügen von Daten

Das Einfügen von Daten ist komplizierter als das Kopieren, da Sie das Format auswählen müssen, das beim Einfügen der Daten in Ihre Anwendung verwendet werden soll.

So fügen Sie Daten aus der Zwischenablage ein

  1. Implementieren Sie OnEditPaste in Ihrer Ansichtsklasse, um Benutzer zu behandeln, die die Option "Einfügen" im Menü "Bearbeiten" auswählen.

  2. Erstellen Sie in der OnEditPaste Funktion ein COleDataObject Objekt und rufen Sie dessen AttachClipboard Memberfunktion auf, um dieses Objekt mit den Daten in der Zwischenablage zu verknüpfen.

  3. Rufen Sie auf COleDataObject::IsDataAvailable , um zu überprüfen, ob ein bestimmtes Format verfügbar ist.

    Alternativ können Sie COleDataObject::BeginEnumFormats verwenden, um nach anderen Formaten zu suchen, bis Sie eines finden, das am besten für Ihre Anwendung geeignet ist.

  4. Führen Sie das Einfügen des Formats aus.

Ein Beispiel für die Funktionsweise finden Sie in der Implementierung der OnEditPaste Memberfunktionen in den Ansichtsklassen, die in den MFC OLE-Beispielprogrammen OCLIENT und HIERSVR definiert sind.

Tipp

Der Hauptvorteil beim Trennen des Einfügevorgangs in eine eigene Funktion besteht darin, dass derselbe Einfügecode verwendet werden kann, wenn Daten während eines Drag-and-Drop-Vorgangs in Der Anwendung abgelegt werden. Wie in OCLIENT und HIERSVR kann Ihre OnDrop-Funktion auch DoPasteItem aufrufen und so den Code wiederverwenden, der für die Implementierung von Einfügeoperationen geschrieben wurde.

Um die Option Einfügen Spezial im Menü Bearbeiten zu handhaben, lesen Sie das Thema Dialogfelder in OLE.

Was möchten Sie mehr über

Siehe auch

Zwischenablage: Verwendung des OLE-Zwischenablage-Mechanismus