Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Hinweis
Die Microsoft Foundation Classes (MFC)-Bibliothek wird weiterhin unterstützt. Wir fügen jedoch keine Features mehr hinzu oder aktualisieren die Dokumentation.
Nachdem ein Datenobjekt oder eine Datenquelle erstellt wurde, können Sie eine Reihe allgemeiner Vorgänge für die Daten ausführen, z. B. Einfügen und Entfernen von Daten, Aufzählen der Formate, in denen sich die Daten befindet, usw. In diesem Artikel werden die Techniken beschrieben, die zum Ausführen der am häufigsten verwendeten Vorgänge erforderlich sind. Dabei werden folgende Themen behandelt:
Einfügen von Daten in eine Datenquelle
Wie Daten in eine Datenquelle eingefügt werden, hängt davon ab, ob die Daten sofort oder nach Bedarf bereitgestellt werden und in welchem Medium sie bereitgestellt wird. Die Möglichkeiten sind wie folgt.
Sofortiges Bereitstellen von Daten (sofortiges Rendering)
Rufen Sie
COleDataSource::CacheGlobalDatawiederholt für jedes Zwischenablageformat auf, in dem Sie Daten bereitstellen. Übergeben Sie das zu verwendende Zwischenablageformat, ein Handle für den Speicher, der die Daten enthält, und, optional, eine FORMATETC-Struktur, die die Daten beschreibt.-oder-
Wenn Sie direkt mit STGMEDIUM-Strukturen arbeiten möchten, rufen Sie
COleDataSource::CacheDataanstelle der obigen OptionCOleDataSource::CacheGlobalDataauf.
Bereitstellen von Daten bei Bedarf (verzögertes Rendering)
Dies ist ein erweitertes Thema.
Rufen Sie
COleDataSource::DelayRenderDatawiederholt für jedes Zwischenablageformat auf, in dem Sie Daten bereitstellen. Übergeben Sie das zu verwendende Zwischenablageformat und optional eine FORMATETC-Struktur, die die Daten beschreibt. Wenn die Daten angefordert werden, wird das FrameworkCOleDataSource::OnRenderDataaufrufen, das Sie überschreiben müssen.-oder-
Wenn Sie ein
CFileObjekt zum Bereitstellen der Daten verwenden, rufen SieCOleDataSource::DelayRenderFileDataanstelleCOleDataSource::DelayRenderDatader vorherigen Option auf. Wenn die Daten angefordert werden, wird das FrameworkCOleDataSource::OnRenderFileDataaufrufen, das Sie überschreiben müssen.
Ermitteln der in einem Datenobjekt verfügbaren Formate
Bevor eine Anwendung dem Benutzer das Einfügen von Daten in die Anwendung ermöglicht, muss sie wissen, ob in der Zwischenablage Formate vorhanden sind, die er verarbeiten kann. Dazu sollte Ihre Anwendung folgendes tun:
Erstellen Sie ein
COleDataObjectObjekt und eine FORMATETC-Struktur .Rufen Sie die Memberfunktion
AttachClipboarddes Datenobjekts auf, um das Datenobjekt mit den Daten in der Zwischenablage zu verknüpfen.Führen Sie eine der folgenden Aktionen aus:
Rufen Sie die Memberfunktion des Datenobjekts
IsDataAvailableauf, wenn nur ein oder zwei Formate erforderlich sind. Dadurch sparen Sie Zeit in Fällen, in denen die Daten in der Zwischenablage wesentlich mehr Formate als Ihre Anwendung unterstützen.-oder-
Rufen Sie die Memberfunktion des Datenobjekts
BeginEnumFormatsauf, um mit der Aufzählung der in der Zwischenablage verfügbaren Formate zu beginnen. Rufen Sie dann aufGetNextFormat, bis die Zwischenablage ein Format zurückgibt, das Ihre Anwendung unterstützt, oder es gibt keine weiteren Formate.
Wenn Sie ON_UPDATE_COMMAND_UI verwenden, können Sie jetzt die Elemente "Einfügen" und ggf. "Inhalte einfügen" im Menü "Bearbeiten" aktivieren. Rufen Sie dazu entweder CMenu::EnableMenuItem oder CCmdUI::Enable. Weitere Informationen dazu, was Containeranwendungen mit Menüelementen und wann tun sollten, finden Sie unter Menüs und Ressourcen: Containerzufügungen.
Abrufen von Daten aus einem Datenobjekt
Nachdem Sie sich für ein Datenformat entschieden haben, müssen die Daten aus dem Datenobjekt abgerufen werden. Dazu entscheidet der Benutzer, wo die Daten abgelegt werden sollen, und die Anwendung ruft die entsprechende Funktion auf. Die Daten werden in einem der folgenden Medien verfügbar sein:
| Mittelstufe | Funktion, die aufgerufen werden soll |
|---|---|
Globaler Speicher (HGLOBAL) |
COleDataObject::GetGlobalData |
Datei (CFile) |
COleDataObject::GetFileData |
STGMEDIUM-Struktur (IStorage) |
COleDataObject::GetData |
Häufig wird das Medium zusammen mit dem Zwischenablage-Format angegeben. Beispielsweise befindet sich ein CF_EMBEDDEDSTRUCT-Objekt immer in einem IStorage Medium, das eine STGMEDIUM-Struktur erfordert. Daher würden Sie verwenden GetData , da es sich um die einzige dieser Funktionen handelt, die eine STGMEDIUM-Struktur akzeptieren können.
In Fällen, in denen sich das Format der Zwischenablage in einem IStream oder HGLOBAL Medium befindet, kann das Framework einen CFile Zeiger bereitstellen, der auf die Daten verweist. Die Anwendung kann dann die Datei lesen, um die Daten abzurufen, ähnlich wie beim Importieren von Daten aus einer Datei. Im Wesentlichen ist dies die clientseitige Schnittstelle zu den OnRenderData und OnRenderFileData Routinen in der Datenquelle.
Der Benutzer kann nun Daten genau wie alle anderen Daten im selben Format in das Dokument einfügen.
Was möchten Sie mehr über
Siehe auch
Datenobjekte und Datenquellen (OLE)
COleDataObject-Klasse
COleDataSource-Klasse