Zwischenablage: Daten kopieren und einfügen
In diesem Thema werden die Mindestaufgaben beschrieben, die zum Implementieren des Kopierens in die Und Einfügen aus der Zwischenablage in Ihrer OLE-Anwendung erforderlich sind. 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
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 einCOleDataSource
Objekt für die Daten.
Rufen Sie die Memberfunktion des
CopyToClipboard
ausgewählten Elements auf.Wenn der Benutzer einen Ausschneiden-Vorgang anstelle eines Kopiervorgangs ausgewählt hat, löschen Sie die ausgewählten Daten aus Ihrer Anwendung.
Ein Beispiel für diese Sequenz finden Sie OnEditCut
OnEditCopy
in den MFC OLE-Beispielprogrammen OCLIENT und HIERSVR. Beachten Sie, dass diese Beispiele Standard einen Zeiger auf die aktuell ausgewählten Daten enthalten, 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
Implementieren Sie
OnEditPaste
in Ihrer Ansichtsklasse, um Benutzer zu behandeln, die die Option "Einfügen" im Menü "Bearbeiten" auswählen.Erstellen Sie in der
OnEditPaste
Funktion einCOleDataObject
Objekt, und rufen Sie dessenAttachClipboard
Memberfunktion auf, um dieses Objekt mit den Daten in der Zwischenablage zu verknüpfen.Rufen Sie auf
COleDataObject::IsDataAvailable
, um zu überprüfen, ob ein bestimmtes Format verfügbar ist.Alternativ können Sie nach
COleDataObject::BeginEnumFormats
anderen Formaten suchen, bis Sie eines für Ihre Anwendung am besten geeignet finden.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 Standard Vorteil der Trennung 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 Ihrer Anwendung abgelegt werden. Wie in OCLIENT und HIERSVR kann Ihre OnDrop
Funktion auch den Code aufrufen DoPasteItem
, der zum Implementieren von Einfügevorgängen geschrieben wurde.
Informationen zum Behandeln der Option "Inhalte einfügen" im Menü "Bearbeiten" finden Sie in den Themendialogfeldern in OLE.