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);
    };