Artikel Moniker
Eine andere ole-implementierte Moniker-Klasse ist die Item moniker, die verwendet werden kann, um ein Objekt zu identifizieren, das in einem anderen Objekt enthalten ist. Ein Typ des enthaltenen Objekts ist ein OLE-Objekt, das in ein zusammengesetztes Dokument eingebettet ist. Ein zusammengesetztes Dokument könnte die darin enthaltenen eingebetteten Objekte identifizieren, indem jedem ein beliebiger Name zugewiesen wird, z. B. "embedobj1", "embedobj2" usw. Ein anderer Typ von enthaltenen Objekten ist eine Benutzerauswahl in einem Dokument, z. B. ein Zellbereich in einer Kalkulationstabelle oder ein Zeichenbereich in einem Textdokument. Ein Objekt, das aus einer Auswahl besteht, wird als Pseudoobjekt bezeichnet, da es erst dann als ein anderes Objekt behandelt wird, wenn ein Benutzer die Auswahl markiert. Eine Kalkulationstabelle kann einen Zellbereich mithilfe eines Namens wie "1A:7F" identifizieren, während ein Textverarbeitungsdokument möglicherweise einen Zeichenbereich mit dem Namen einer Textmarke identifiziert.
Ein Elementmoniker ist in erster Linie nützlich, wenn er verkettet oder zusammengesetzt, mit einem anderen Moniker, der den Container identifiziert. Ein Element moniker wird in der Regel erstellt und dann in (z. B.) einem Dateimoniker erstellt, um das Äquivalent eines vollständigen Pfads zum Objekt zu erstellen. Sie können z. B. den Dateimoniker "c:\work\report.doc" (der das Containerobjekt identifiziert) mit dem Element moniker "embedobj1" (der ein Objekt innerhalb des Containers identifiziert) verfassen, um den Moniker "c:\work\report.doc\embedobj1" zu bilden, der ein bestimmtes Objekt innerhalb einer bestimmten Datei eindeutig identifiziert. Sie können auch zusätzliche Elementmoniker verketten, um tief geschachtelte Objekte zu identifizieren. Wenn beispielsweise "embedobj1" der Name eines Tabellenkalkulationsobjekts ist, können Sie einen bestimmten Zellbereich in diesem Tabellenkalkulationsobjekt anfügen, um einen anderen Elementmoniker anzufügen, um einen Moniker zu erstellen, der das Äquivalent von "c:\work\report.doc\embedobj1\1A:7F" wäre.
In Kombination mit einem Dateimoniker bildet ein Elementmoniker einen vollständigen Pfad. Elementmoniker erweitern somit den Begriff der Pfadnamen über das Dateisystem hinaus, definieren Pfadnamen zur Identifizierung einzelner Objekte, nicht nur Dateien.
Es gibt einen erheblichen Unterschied zwischen einem Element moniker und einem Dateimoniker. Der in einem Dateimoniker enthaltene Pfad ist für jeden sinnvoll, der das Dateisystem versteht, während der in einem Elementmoniker enthaltene Teilpfad nur für einen bestimmten Container aussagekräftig ist. Jeder weiß, worauf "c:\work\report.doc" verweist, aber nur ein bestimmtes Containerobjekt weiß, worauf "1A:7F" verweist. Ein Container kann einen elementmoniker, der von einer anderen Anwendung erstellt wurde, nicht interpretieren; der einzige Container, der weiß, auf welches Objekt durch einen Elementmoniker verwiesen wird, ist der Container, der dem Objekt zuerst den Elementmoniker zugewiesen hat. Aus diesem Grund muss die Quelle des Objekts, das durch die Kombination einer Datei und eines Elementmonikers benannt wird, nicht nur IPersistFileimplementieren, um die Bindung des Dateimonikers zu erleichtern, sondern auch IOleItemContainer, um das Auflösen des Namens des Elementmonikers in das entsprechende Objekt im Kontext einer Datei zu erleichtern.
Der Vorteil von Monikern ist, dass jemand, der einen Moniker verwendet, um ein Objekt zu finden, nicht den Namen verstehen muss, der im Elementmoniker enthalten ist, solange der Elementmoniker Teil eines Zusammengesetzt ist. Im Allgemeinen wäre es nicht sinnvoll, einen Item Moniker allein zu existieren. Stattdessen würden Sie einen Elementmoniker in einen Dateimoniker verfassen. Anschließend würden Sie IMoniker::BindToObject für das Zusammengesetzt aufrufen, das die einzelnen Moniker darin bindet und die Namen interpretiert.
Um ein Element moniker-Objekt zu erstellen und den Zeiger auf den Moniker-Anbieter zurückzugeben, stellt OLE die Hilfsfunktion CreateItemMonikerbereit. Diese Funktion erstellt ein Elementmoniker-Objekt und gibt den Mauszeiger auf den Anbieter zurück.
Verwandte Themen