アイテム モニカー

別の OLE 実装モニカー クラスは、別のオブジェクトに含まれるオブジェクトを識別するために使用できるアイテム モニカーです。 包含オブジェクトの種類の 1 つは、複合ドキュメントに埋め込まれた OLE オブジェクトです。 複合ドキュメントでは、それぞれに「embedobj1」、「embedobj2」などの任意の名前を割り当てることで、複合ドキュメントに含まれる埋め込みオブジェクトを識別できます。 含まれるオブジェクトのもう 1 つのタイプは、スプレッドシート内のセルの範囲やテキスト ドキュメント内の文字の範囲など、ドキュメント内のユーザー選択です。 選択で構成されるオブジェクトは、ユーザーが選択をマークするまで個別のオブジェクトとして扱われないため、擬似オブジェクトと呼ばれます。 スプレッドシートでは「1A:7F」などの名前を使用してセル範囲を識別する場合がありますが、ワード プロセッサ文書ではブックマークの名前を使用して文字範囲を識別する場合があります。

アイテム モニカーは、主にコンテナーを識別する別のモニカーと連結または構成される場合に便利です。 通常、アイテム モニカーは作成され、(たとえば) ファイル モニカー上に作成され、オブジェクトへの完全なパスと同等のパスが作成されます。 たとえば、ファイル モニカー「c:\work\report.doc」(コンテナー オブジェクトを識別する) とアイテム モニカー「embedobj1」(コンテナ内のオブジェクトを識別する) を合成して、モニカー「c:\」を形成できます。「c:\work\report.doc\embedobj1」は、特定のファイル内の特定のオブジェクトを一意に識別します。 また、追加のアイテム モニカーを連結して、深く入れ子になったオブジェクトを識別することもできます。 たとえば、「embedobj1」がスプレッドシート オブジェクトの名前である場合、そのスプレッドシート オブジェクトの特定のセル範囲を識別するために、別のアイテム モニカーを追加して、「c:embedobj1:7F」に相当するモニカーを作成することができます。

ファイル モニカーと組み合わせると、アイテム モニカーは完全なパスを形成します。 したがって、アイテム モニカーはパス名の概念をファイル システムを超えて拡張し、ファイルだけでなく個々のオブジェクトを識別するためのパス名を定義します。

アイテム モニカーとファイル モニカーには大きな違いがあります。 ファイル モニカーに含まれるパスは、ファイル システムを理解する人にとって意味がありますが、アイテム モニカーに含まれる部分パスは、特定のコンテナーに対してのみ意味があります。 「c:\work\report.doc」が何を指すのかはどのオブジェクトも知っていますが、「1A:7F」が何を指すのかを知っているのは 1 つの特定のコンテナー オブジェクトだけです。 あるコンテナーは、別のアプリケーションによって作成されたアイテム モニカーを解釈できません。アイテム モニカによってどのオブジェクトが参照されているかを知っている唯一のコンテナーは、最初にアイテム モニカーをオブジェクトに割り当てたコンテナーです。 このため、ファイルと項目モニカーの組み合わせによって名前付けされたオブジェクトのソースは、ファイル モニカーのバインドを容易にするために IPersistFile を実装するだけでなく、IOleItemContainer を実装して、ファイルのコンテキストでアイテム モニカーの名前を適切なオブジェクトに解決できるようにする必要があります。

モニカーの利点は、アイテム モニカーが複合体の一部である限り、モニカーを使用してオブジェクトを検索する人が、アイテム モニカーに含まれる名前を理解する必要がないことです。 一般に、アイテム モニカーが単独で存在することは意味がありません。 代わりに、ファイル モニカーにアイテム モニカーを作成します。 その後、複合モニカーで IMoniker::BindToObject を呼び出し、その中の個々のモニカーをバインドし、名前を解釈します。

アイテム モニカー オブジェクトを作成し、モニカー プロバイダーへのポインターを返すために、OLE はヘルパー関数 CreateItemMoniker を提供します。 この関数は、アイテム モニカー オブジェクトを作成し、プロバイダーへのポインターを返します。

アンチモニカー

クラス モニカー

複合モニカー

ファイル モニカー

ポインター モニカー