CreateGenericComposite
Performs a
generic composition of two monikers and supplies a pointer to the resulting
composite moniker.
WINOLEAPI CreateGenericComposite(
LPMONIKER pmkFirst, |
//Pointer to the first moniker |
LPMONIKER pmkRest, |
//Pointer to the second moniker |
LPMONIKER FAR *ppmkComposite |
//Indirect pointer to the composite |
); |
|
Parameters
pmkFirst
[in] Pointer
to the moniker to be composed to the left of the moniker that pmkRest
points to. Can point to any kind of moniker, including a generic composite.
pmkRest
[in] Pointer
to the moniker to be composed to the right of the moniker that pmkFirst
points to. Can point to any kind of moniker compatible with the type of the pmkRest
moniker, including a generic composite.
ppmkComposite
[out]
Indirect pointer to the IMoniker
Return Values
This function
supports the standard return value E_OUTOFMEMORY, as well as the following:
S_OK
The two input
monikers were successfully composed.
MK_E_SYNTAX
The two
monikers could not be composed due to an error in the syntax of a path (for
example, if both pmkFirst and pmkRest are file monikers based on
absolute paths).
Remarks
CreateGenericComposite joins two monikers into one. The moniker classes
being joined can be different, subject only to the rules of composition. Call
this function only if you are writing a new moniker class by implementing the IMoniker
interface, within an implementation of IMoniker::ComposeWith
Moniker
providers should call IMoniker::ComposeWith to compose two monikers
together. Implementations of ComposeWith should (as do OLE
implementations) attempt, when reasonable for the class, to perform non-generic
compositions first, in which two monikers of the same class are combined. If
this is not possible, the implementation can call CreateGenericComposite
to do a generic composition, which combines two monikers of different classes,
within the rules of composition. You can define new types of non-generic
compositions if you write a new moniker class.
During the
process of composing the two monikers, CreateGenericComposite makes all
possible simplifications. Consider the example where pmkFirst is the
generic composite moniker, A B C,
and pmkRest is the generic composite moniker, C (-1) B (-1) Z (where C (-1) is the inverse of C). The function
first composes C to C (-1) ,
which composes to nothing. Then it composes B and B (-1) to nothing.
Finally, it composes A to Z, and supplies a pointer to the
generic composite moniker, A Z.
See Also