IMoniker::P arseDisplayName-Methode (objidl.h)
Konvertiert einen Anzeigenamen in einen Moniker.
Syntax
HRESULT ParseDisplayName(
[in] IBindCtx *pbc,
[in] IMoniker *pmkToLeft,
[in] LPOLESTR pszDisplayName,
[out] ULONG *pchEaten,
[out] IMoniker **ppmkOut
);
Parameter
[in] pbc
Ein Zeiger auf die IBindCtx-Schnittstelle im Bindungskontext, der in diesem Bindungsvorgang verwendet werden soll. Der Bindungskontext speichert Objekte, die während des Bindungsprozesses gebunden sind, enthält Parameter, die für alle Vorgänge mit dem Bindungskontext gelten, und stellt die Mittel bereit, mit denen die Monikerimplementierung Informationen zu ihrer Umgebung abrufen soll.
[in] pmkToLeft
Ein Zeiger auf die IMoniker-Schnittstelle auf dem Moniker, der bis zu diesem Punkt aus dem Anzeigenamen erstellt wurde.
[in] pszDisplayName
Der verbleibende Anzeigename, der analysiert werden soll.
[out] pchEaten
Ein Zeiger auf eine Variable, die die Anzahl der Zeichen in pszDisplayName empfängt, die in diesem Schritt verwendet wurden.
[out] ppmkOut
Ein Zeiger auf eine IMoniker-Zeigervariable , die den Schnittstellenzeiger auf den Moniker empfängt, der aus pszDisplayName erstellt wurde. Bei erfolgreicher Implementierung muss AddRef für den neuen Moniker aufgerufen werden. Es liegt in der Verantwortung des Aufrufers, Release aufzurufen. Wenn ein Fehler auftritt, legt die Implementierung *ppmkOut auf NULL fest.
Rückgabewert
Diese Methode kann die standardmäßige Rückgabe valuesE_OUTOFMEMORY und E_UNEXPECTED sowie die folgenden Werte zurückgeben.
Rückgabecode | BESCHREIBUNG |
---|---|
|
Der Analysevorgang wurde erfolgreich abgeschlossen. |
|
Ein Fehler in der Syntax der Eingabekomponenten (pmkToLeft, dieser Moniker und pszDisplayName). Beispielsweise gibt ein Dateimoniker diesen Fehler zurück, wenn pmkToLeft ungleich NULL ist, und ein Elementmoniker gibt ihn zurück, wenn pmkToLeftNULL ist. |
Diese Methode kann auch die Fehler zurückgeben, die der IMoniker::BindToObject-Methode zugeordnet sind.
Hinweise
Hinweise für Anrufer
Moniker-Clients rufen ParseDisplayName in der Regel nicht direkt auf. Stattdessen rufen sie die MkParseDisplayName-Funktion auf, wenn sie einen Anzeigenamen in einen Moniker konvertieren möchten (z. B. beim Implementieren des Dialogfelds Links für eine Containeranwendung oder zum Implementieren einer Makrosprache, die Verweise auf Objekte außerhalb des Dokuments unterstützt). Diese Funktion analysiert zunächst den anfänglichen Teil des Anzeigenamens selbst.Anschließend ruft er ParseDisplayName für den soeben erstellten Moniker auf, übergibt den Rest des Anzeigenamens und erhält im Gegenzug einen neuen Moniker. Dieser Schritt wird wiederholt, bis der gesamte Anzeigename analysiert wurde.
Hinweise für Implementierer
Ihre Implementierung kann diese Analyse möglicherweise selbst ausführen, wenn Ihre Monikerklasse nur für bestimmte Arten von Objekten vorgesehen ist. Andernfalls müssen Sie einen IParseDisplayName-Schnittstellenzeiger für das Objekt abrufen, das von moniker-so-far identifiziert wird (d. h. die Zusammensetzung von pmkToLeft und diesem Moniker), und dann die Ergebnisse des Aufrufs von IParseDisplayName::P arseDisplayName zurückgeben.Es gibt verschiedene Strategien zum Abrufen eines IParseDisplayName-Zeigers , wie folgt:
- Sie können versuchen, die CLSID des Objekts abzurufen (indem Sie IPersist::GetClassID für das Objekt aufrufen) und dann die CoGetClassObject-Funktion aufrufen, um die IParseDisplayName-Schnittstelle in der Klassenfactory anzufordern, die dieser CLSID zugeordnet ist.
- Sie können versuchen, eine Bindung an das Objekt selbst zu binden, um einen IParseDisplayName-Zeiger abzurufen.
- Sie können versuchen, eine Bindung an das von pmkToLeft identifizierte Objekt zu erstellen, um einen IOleItemContainer-Zeiger abzurufen, und dann IOleItemContainer::GetObject aufrufen, um einen IParseDisplayName-Zeiger für das Element abzurufen.
Implementierungsspezifische Hinweise
Implementierung | Hinweise |
---|---|
Anti-Moniker | Diese Methode gibt E_NOTIMPL zurück. |
Moniker der Klasse |
Diese Methode analysiert den Anzeigenamen, indem sie für IParseDisplayName an sich bindet und das gebundene Objekt auffordert, den Anzeigenamen wie folgt in einen Moniker zu analysieren.
Diese Methode versucht, einen IParseDisplayName-Zeiger abzurufen, zuerst durch Bindung an die Klassenfactory für das durch den Moniker identifizierte Objekt und dann durch Bindung an das Objekt selbst. Wenn einer dieser Bindungsvorgänge erfolgreich ist, übergibt der Dateimoniker den nicht analysierten Teil des Anzeigenamens an die IParseDisplayName::P arseDisplayName-Methode . Diese Methode gibt MK_E_SYNTAX zurück, wenn pmkToLeft nicht NULL ist. |
Dateimoniker | Diese Methode versucht, einen IParseDisplayName-Zeiger abzurufen, zuerst durch Bindung an die Klassenfactory für das durch den Moniker identifizierte Objekt und dann durch Bindung an das Objekt selbst. Wenn einer dieser Bindungsvorgänge erfolgreich ist, übergibt der Dateimoniker den nicht analysierten Teil des Anzeigenamens an die IParseDisplayName::P arseDisplayName-Methode . |
Generischer zusammengesetzter Moniker | Diese Methode ruft rekursiv IMoniker::P arseDisplayName auf der äußersten rechten Komponente des zusammengesetzten Elements auf und übergibt alles andere als den parameter pmkToLeft für diesen Aufruf. |
Elementmoniker | Wenn pmkToLeftNULL ist, gibt diese Methode MK_E_SYNTAX zurück. Andernfalls ruft die Methode IMoniker::BindToObject für den parameter pmkToLeft auf und fordert einen IOleItemContainer-Schnittstellenzeiger an. Die -Methode ruft dann IOleItemContainer::GetObject auf, fordert einen IParseDisplayName-Schnittstellenzeiger auf das durch den Moniker identifizierte Objekt an und übergibt den Anzeigenamen an IParseDisplayName::P arseDisplayName. |
OBJREF-Moniker | Wenn pmkToLeft nicht NULL ist, gibt diese Methode MK_E_SYNTAX zurück. |
Zeigermoniker | Diese Methode fragt den umschlossenen Zeiger für die IParseDisplayName-Schnittstelle ab und übergibt den Anzeigenamen an IParseDisplayName::P arseDisplayName. |
URL-Moniker | Analysiert eine vollständige oder partielle URL-Zeichenfolge in einen Ergebnismoniker (ppmkOut). Wenn szDisplayName eine vollständige URL-Zeichenfolge darstellt (z. B. "http://foo.com/default.html"), ist das Ergebnis ein neuer vollständiger URL-Moniker. Wenn szDisplayName eine partielle URL-Zeichenfolge darstellt (z. B. ".. \default.html") ist das Ergebnis eine vollständige URL, die den Kontext entweder aus dem SZ_URLCONTEXT object-parameter des Bindungskontexts oder aus diesem URL-Moniker übernimmt. Beispielsweise, wenn der Kontextmoniker "http://foo.com/pub/list.html" und szDisplayName "." lautet. \default.html" würde der resultierende URL-Moniker "http://foo.com/default.html" darstellen. |
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 2000 Professional [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | objidl.h |