Item Moniker Class
Item monikers provide a bridge from the generality of IMoniker interface to the simple and common situation in which an object which is a container of other objects also provides a space of names for those objects. Examples include spreadsheet applications which contain named ranges, various word-processing applications which support bookmarks.
Item Moniker is a class, not a interface; that is, it is an implementation of IMoniker provided by COM library, not an interface that others implement. This implementation supports IMoniker interface by converting IMoniker invocations into a series of calls on part of the interface IOleItemContainer. The implication is that many object implementers do not have to deal much with monikers: they can deal simply with "items" in a string form, then wrap them in an Item Moniker as needed to support other interfaces.
A client creates an Item Moniker using CreateItemMoniker. When this new moniker is composed onto the end of a moniker that binds to an IOleItemContainer, the resulting composite moniker will bind to the appropriate contained object.
The following is the IOleItemContainer interface used by Item Monikers:
interface IOleItemContainer : IOleContainer {
virtual HRESULT GetObject(lpszItem, dwSpeedNeeded, pbc, riid, ppvObject);
virtual HRESULT GetObjectStorage(lpszItem, pbc, riid, ppvStorage);
virtual HRESULT IsRunning(lpszItem);
};