Reads as many characters of the specified display name as it understands and
builds a moniker corresponding to the portion read; this procedure is known as
"parsing" the display name.
| IBindCtx *pbc,
||//Bind context to be used
| IMoniker *pmkToLeft,
||//Moniker to the left in the composite
| LPOLESTR pszDisplayName,
| ULONG *pchEaten,
||//Receives number of characters consumed
| IMoniker **ppmkOut
||//Receives moniker built from display name
[in] Points to the bind context to be used in this binding operation. The bind
context caches objects bound during the binding process, contains parameters
that apply to all operations using the bind context, and provides the means by
which the moniker implementation should retrieve information about its
environment. For more information, see IBindCtx
[in] Points to the moniker that has been built out of the display name up to
[in] Points to a zero-terminated string containing the remaining display name
to be parsed. For Win32 applications, the LPOLESTR
type indicates a wide character string (two bytes per character); otherwise,
the string has one byte per character.
[out] Receives the number of characters in pszDisplayName
that were consumed in this step.
[out] Receives a pointer to the moniker that was built from pszDisplayName
. If an error occurs, the implementation sets *ppmkOut
to NULL. If *ppmkOut
is non-NULL, the implementation must call IUnknown::AddRef
on the parameter; it is the caller's responsibility to call IUnknown::Release
The parsing operation was completed successfully.
Indicates an error in the syntax of the input components (pmkToLeft
, this moniker, and pszDisplayName
). For example, a file moniker returns this error if pmkToLeft
is non-NULL, and an item moniker returns it if pmkToLeft
Indicates insufficient memory.
Indicates an unexpected error.
Parsing display names may cause binding. Thus, any error associated with this
function may be returned.
Notes to Callers
Moniker clients do not typically call IMoniker::ParseDisplayName
directly. Instead, they call the MkParseDisplayName
API function when they want to convert a display name into a moniker (for
example, in implementing the Links dialog box for a container application, or for
implementing a macro language that supports references to objects outside the
document). That API function first parses the initial portion of the display
name itself. It then calls IMoniker::ParseDisplayName
on the moniker it has just created, passing the remainder of the display name
and getting a new moniker in return; this step is repeated until the entire
display name has been parsed.
Notes to Implementors
Your implementation may be able to perform this parsing by itself if your
moniker class is designed to designate only certain kinds of objects. Otherwise,
you must get an IParseDisplayName
interface pointer for the object identified by the moniker-so-far (i.e., the
composition of pmkToLeft
and this moniker) and then return the results of calling IParseDisplayName::ParseDisplayName
There are different strategies for getting an IParseDisplayName
- You can try to get the object's CLSID (for example, by calling IPersist::GetClassID on the object), and then call the CoGetClassObject API function, requesting the IParseDisplayName interface on the class factory associated with that CLSID.
- You can try to bind to the object itself to get an IParseDisplayName pointer.
- You can try binding to the object identified by pmkToLeft to get an IOleItemContainer pointer, and then call IOleItemContainer::GetObject to get an IParseDisplayName pointer for the item.
Any objects that are bound should be registered with the bind context (see IBindCtx::RegisterObjectBound
) to ensure that they remain running for the duration of the parsing operation.
- Software for developers
Software for Android Developers
- More information resources
Unix Manual Pages