Elementmoniker

Eine weitere OLE-implementierte Monikerklasse ist der Elementmoniker, der verwendet werden kann, um ein in einem anderen Objekt enthaltenes Objekt zu identifizieren. Ein Typ eines enthaltenen Objekts ist ein OLE-Objekt, das in ein zusammengesetztes Dokument eingebettet ist. Ein zusammengesetztes Dokument kann die darin enthaltenen eingebetteten Objekte identifizieren, indem jedem Objekt 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 Zellenbereich in einer Kalkulationstabelle oder ein Zeichenbereich in einem Textdokument. Ein Objekt, das aus einer Auswahl besteht, wird als Pseudoobjekt bezeichnet, da es erst als eindeutiges Objekt behandelt wird, wenn ein Benutzer die Auswahl markiert. Ein Arbeitsblatt kann einen Zellenbereich mit einem Namen wie "1A:7F" identifizieren, während ein Textverarbeitungsdokument einen Zeichenbereich mit dem Namen eines Lesezeichens identifizieren kann.

Ein Elementmoniker ist in erster Linie nützlich, wenn er mit einem anderen Moniker verkettet oder zusammengesetzt wird, der den Container identifiziert. Ein Elementmoniker wird in der Regel erstellt und dann (z. B. ) in einem Dateimoniker zusammengesetzt, um die Entsprechung eines vollständigen Pfads zum Objekt zu erstellen. Beispielsweise können Sie den Dateimoniker "c: \ work \report.doc" (der das Containerobjekt identifiziert) mit dem Elementmoniker "embedobj1" (der ein Objekt innerhalb des Containers identifiziert) zusammenstellen, um den Moniker "c: \ workreport.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 "embedobj1" beispielsweise der Name eines Tabellenkalkulationsobjekts ist, können Sie zum Identifizieren eines bestimmten Zellenbereichs in diesem Tabellenkalkulationsobjekt einen anderen Elementmoniker anfügen, um einen Moniker zu erstellen, der "c: \ work \report.doc\ embedobj1 \ 1A:7F" entspricht.

In Kombination mit einem Dateimoniker bildet ein Elementmoniker einen vollständigen Pfad. Elementmoniker erweitern daher das Konzept von Pfadnamen über das Dateisystem hinaus und definieren Pfadnamen, um einzelne Objekte und nicht nur Dateien zu identifizieren.

Es gibt einen erheblichen Unterschied zwischen einem Elementmoniker und einem Dateimoniker. Der in einem Dateimoniker enthaltene Pfad ist für jeden sinnvoll, der das Dateisystem versteht, während der teilliche Pfad in einem Elementmoniker nur für einen bestimmten Container von Bedeutung ist. Jeder weiß, worauf sich "c: \ work \report.doc" bezieht, 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 von einem Elementmoniker verwiesen wird, ist der Container, der dem Objekt den Elementmoniker überhaupt 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 das Binden des Dateimonikers zu vereinfachen, 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 besteht darin, dass ein Benutzer, der einen Moniker verwendet, um ein Objekt zu finden, den Im Elementmoniker enthaltenen Namen nicht verstehen muss, solange der Elementmoniker Teil eines zusammengesetzten Monikers ist. Im Allgemeinen wäre es nicht sinnvoll, dass ein Elementmoniker eigenständig vorhanden ist. Stattdessen erstellen Sie einen Elementmoniker in einem Dateimoniker. Anschließend rufen Sie IMoniker::BindToObject für die zusammengesetzte Aufforderung auf, die die einzelnen Moniker darin bindet und die Namen interpretiert.

Ole stellt die Hilfsfunktion CreateItemMonikerbereit, um ein Elementmonikerobjekt zu erstellen und seinen Zeiger auf den Monikeranbieter zurückzugeben. Diese Funktion erstellt ein Elementmonikerobjekt und gibt seinen Zeiger auf den Anbieter zurück.

Antimoniker

Klassenmoniker

Zusammengesetzte Moniker

Dateimoniker

Zeigermoniker