IMoniker::ParseDisplayName
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.
HRESULT ParseDisplayName(
IBindCtx *pbc,
| //Bind context to be used
|
IMoniker *pmkToLeft,
| //Moniker to the left in the composite
|
LPOLESTR pszDisplayName,
| //Display name
|
ULONG *pchEaten,
| //Receives number of characters consumed
|
IMoniker **ppmkOut
| //Receives moniker built from display name
|
);
|
|
Parameters
pbc
[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.
pmkToLeft
[in] Points to the moniker that has been built out of the display name up to
this point.
pszDisplayName
[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.
pchEaten
[out] Receives the number of characters in
pszDisplayName that were consumed in this step.
ppmkOut
[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.
Return Values
S_OK
The parsing operation was completed successfully.
MK_E_SYNTAX
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 is NULL.
E_OUTOFMEMORY
Indicates insufficient memory.
E_UNEXPECTED
Indicates an unexpected error.
IMoniker::BindToObject errors
Parsing display names may cause binding. Thus, any error associated with this
function may be returned.
Comments
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 pointer:
- 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.
See Also
IParseDisplayName,
MkParseDisplayName
- Software for developers
-
Delphi Components
.Net Components
Software for Android Developers
- More information resources
-
MegaDetailed.Net
Unix Manual Pages
Delphi Examples
- Databases for Amazon shops developers
-
Amazon Categories Database
Browse Nodes Database