Zwischenablage: Hinzufügen anderer Formate
In diesem Thema wird erläutert, wie Sie die Liste der unterstützten Formate erweitern, insbesondere für die OLE-Unterstützung. Das Thema Zwischenablage: Kopieren und Einfügen von Daten beschreibt die minimale Implementierung, die erforderlich ist, um das Kopieren und Einfügen aus der Zwischenablage zu unterstützen. Wenn Dies alles ist, was Sie implementieren, sind die einzigen Formate, die in der Zwischenablage platziert werden , CF_METAFILEPICT, CF_EMBEDSOURCE, CF_OBJECTDESCRIPTOR und möglicherweise CF_LINKSOURCE. Die meisten Anwendungen benötigen mehr Formate in der Zwischenablage als diese drei.
Registrieren von benutzerdefinierten Formaten
Um eigene benutzerdefinierte Formate zu erstellen, befolgen Sie dasselbe Verfahren, das Sie beim Registrieren eines benutzerdefinierten Zwischenablageformats verwenden würden: Übergeben Sie den Namen des Formats an die RegisterClipboardFormat-Funktion , und verwenden Sie den Rückgabewert als Format-ID.
Platzieren von Formaten in der Zwischenablage
Wenn Sie weitere Formate zu den in der Zwischenablage platzierten Formaten hinzufügen möchten, müssen Sie die OnGetClipboardData
Funktion in der Von ihnen COleClientItem
abgeleiteten Klasse überschreiben oder COleServerItem
(je nachdem, ob die zu kopierenden Daten systemeigene Daten sind). In dieser Funktion sollten Sie das folgende Verfahren verwenden.
So platzieren Sie Formate in der Zwischenablage
Erstellen eines
COleDataSource
-ObjektsÜbergeben Sie diese Datenquelle an eine Funktion, die die systemeigenen Datenformate zur Liste der unterstützten Formate durch Aufrufen
COleDataSource::CacheGlobalData
hinzufügt.Fügen Sie Standardformate hinzu, indem Sie für jedes Standardformat, das Sie unterstützen möchten, aufrufen
COleDataSource::CacheGlobalData
.
Diese Technik wird im MFC OLE-Beispielprogramm HIERSVR verwendet (untersuchen Sie die OnGetClipboardData
Memberfunktion der CServerItem-Klasse ). Der einzige Unterschied in diesem Beispiel besteht darin, dass Schritt 3 nicht implementiert wird, da HIERSVR keine anderen Standardformate unterstützt.