CreateAntiMoniker

Creates and returns a new anti-moniker.

WINOLEAPI CreateAntiMoniker(

LPMONIKER FAR *ppmk
//Receives the anti-moniker
);

Parameter

ppmk

Receives an IMoniker interface pointer to the new anti-moniker. The returned pointer is NULL if an error occurs; if non-NULL, the function has called IUnknown::AddRef on the parameter and the caller is responsible for calling IUnknown::Release.

Return Values

S_OK

Indicates the anti-moniker was created successfully.

E_OUTOFMEMORY

Indicates insufficient memory.

Comments

You would call this function only if you are writing your own moniker class (implementing the IMoniker interface). If you want an anti-moniker to act as the inverse for your moniker class, you can call CreateAntiMoniker from your implementation of IMoniker::Inverse.

The inverse of a moniker is analogous to the ".." directory in MS-DOS file systems; the ".." directory acts as the inverse to any other directory name, because appending ".." to a directory name results in an empty path. In the same way, the inverse of a moniker typically is also the inverse of all monikers in the same class. However, it is not necessarily the inverse of a moniker of a different class.

An anti-moniker can be used as the inverse for certain classes of monikers. For example, the system-provided implementations of file monikers, item monikers, and pointer monikers all use anti-monikers as their inverse; consequently, an anti-moniker composed to the right of a file, item, or pointer moniker composes to nothing.

If you're a moniker client, you typically do not know the class of the moniker you're using. If you need to get the inverse of a moniker, you should always call IMoniker::Inverse rather that the CreateAntiMoniker function, because you cannot be certain that the moniker you're using considers an anti-moniker to be its inverse. For example, if you need to remove the last piece of a composite moniker, call IMoniker::Enum on the composite, specifying FALSE as the first parameter; this call creates an enumerator that returns the component monikers in reverse order. Use the enumerator to retrieve the last piece of the composite, and call IMoniker::Inverse on that moniker. The moniker returned by IMoniker::Inverse will remove the last piece of the composite.

If you are writing a new moniker class and you have no special requirements for its inverse, you can use CreateAntiMoniker in your implementation of the IMoniker::Inverse method, and then check for an anti-moniker in your implementation of IMoniker::ComposeWith.

See Also

IMoniker::Inverse, IMoniker::ComposeWith, IMoniker - Anti-Moniker Implementation

Software for developers
Delphi Components
.Net Components
Software for Android Developers
More information resources
MegaDetailed.Net
Unix Manual Pages
Delphi Examples