Freigeben über


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
S_OK
Der Analysevorgang wurde erfolgreich abgeschlossen.
MK_E_SYNTAX
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:

Alle gebundenen Objekte sollten mit dem Bindungskontext registriert werden (siehe IBindCtx::RegisterObjectBound), um sicherzustellen, dass sie für die Dauer des Analysevorgangs ausgeführt werden.

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.
  hr = BindToObject(pbc, pmkToLeft, IID_IParseDisplayName, (void**)&ppdn);
  if (SUCCEEDED(hr)) {
    hr = ppdn->ParseDisplayName(pbc, lpszDisplayName, pchEaten, ppmkOut);
    ppdn->Release();
  }
  return hr;

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

Weitere Informationen

Imoniker

IParseDisplayName

MkParseDisplayName