Condividi tramite


Metodo IMoniker::P arseDisplayName (objidl.h)

Converte un nome visualizzato in un moniker.

Sintassi

HRESULT ParseDisplayName(
  [in]  IBindCtx *pbc,
  [in]  IMoniker *pmkToLeft,
  [in]  LPOLESTR pszDisplayName,
  [out] ULONG    *pchEaten,
  [out] IMoniker **ppmkOut
);

Parametri

[in] pbc

Puntatore all'interfaccia IBindCtx nel contesto di associazione da usare in questa operazione di associazione. Il contesto di associazione memorizza nella cache gli oggetti associati durante il processo di associazione, contiene parametri che si applicano a tutte le operazioni che usano il contesto di associazione e fornisce i mezzi con cui l'implementazione del moniker deve recuperare informazioni sul relativo ambiente.

[in] pmkToLeft

Puntatore all'interfaccia IMoniker nel moniker creato dal nome visualizzato fino a questo punto.

[in] pszDisplayName

Nome visualizzato rimanente da analizzare.

[out] pchEaten

Puntatore a una variabile che riceve il numero di caratteri in pszDisplayName utilizzati in questo passaggio.

[out] ppmkOut

Puntatore a una variabile puntatore IMoniker che riceve il puntatore dell'interfaccia al moniker creato da pszDisplayName. In caso di esito positivo, l'implementazione deve chiamare AddRef sul nuovo moniker; è responsabilità del chiamante chiamare Release. Se si verifica un errore, l'implementazione imposta *ppmkOut su NULL.

Valore restituito

Questo metodo può restituire i valuesE_OUTOFMEMORY e i E_UNEXPECTED restituiti standard, nonché i valori seguenti.

Codice restituito Descrizione
S_OK
L'operazione di analisi è stata completata correttamente.
MK_E_SYNTAX
Errore nella sintassi dei componenti di input (pmkToLeft, questo moniker e pszDisplayName). Ad esempio, un moniker di file restituisce questo errore se pmkToLeft è diverso da NULL e un moniker dell'elemento lo restituisce se pmkToLeft è NULL.
 

Questo metodo può anche restituire gli errori associati al metodo IMoniker::BindToObject .

Commenti

Note ai chiamanti

I client moniker in genere non chiamano direttamente ParseDisplayName . Chiamano invece la funzione MkParseDisplayName quando desiderano convertire un nome visualizzato in un moniker( ad esempio, nell'implementazione della finestra di dialogo Collegamenti per un'applicazione contenitore o per l'implementazione di un linguaggio macro che supporta riferimenti a oggetti esterni al documento). Tale funzione analizza innanzitutto la parte iniziale del nome visualizzato stesso.

Chiama quindi ParseDisplayName sul moniker appena creato, passando il resto del nome visualizzato e ottenendo un nuovo moniker in cambio; questo passaggio viene ripetuto fino a quando non viene analizzato l'intero nome visualizzato.

Note per gli implementatori

L'implementazione può essere in grado di eseguire questa analisi autonomamente se la classe moniker è progettata per designare solo determinati tipi di oggetti. In caso contrario, è necessario ottenere un puntatore all'interfaccia IParseDisplayName per l'oggetto identificato dal moniker-so-finora (ovvero la composizione di pmkToLeft e questo moniker) e quindi restituire i risultati della chiamata di IParseDisplayName::P arseDisplayName.

Esistono diverse strategie per ottenere un puntatore IParseDisplayName , come indicato di seguito:

Tutti gli oggetti associati devono essere registrati con il contesto di associazione (vedere IBindCtx::RegisterObjectBound) per assicurarsi che rimangano in esecuzione per la durata dell'operazione di analisi.

Note specifiche dell'implementazione

Implementazione Note
Anti-moniker Questo metodo restituisce E_NOTIMPL.
Moniker di classe Questo metodo analizza il nome visualizzato associandolo a se stesso per IParseDisplayName e chiedendo all'oggetto associato di analizzare il nome visualizzato in un moniker, come indicato di seguito.
  hr = BindToObject(pbc, pmkToLeft, IID_IParseDisplayName, (void**)&ppdn);
  if (SUCCEEDED(hr)) {
    hr = ppdn->ParseDisplayName(pbc, lpszDisplayName, pchEaten, ppmkOut);
    ppdn->Release();
  }
  return hr;

Questo metodo tenta di acquisire un puntatore IParseDisplayName , innanzitutto associandolo alla class factory per l'oggetto identificato dal moniker e quindi associandolo all'oggetto stesso. Se una di queste operazioni di associazione ha esito positivo, il moniker del file passa la parte non analizzata del nome visualizzato al metodo IParseDisplayName::P arseDisplayName .

Questo metodo restituisce MK_E_SYNTAX se pmkToLeft è diverso da NULL.

Moniker file Questo metodo tenta di acquisire un puntatore IParseDisplayName , innanzitutto associandolo alla class factory per l'oggetto identificato dal moniker e quindi associandolo all'oggetto stesso. Se una di queste operazioni di associazione ha esito positivo, il moniker del file passa la parte non analizzata del nome visualizzato al metodo IParseDisplayName::P arseDisplayName .
Moniker composito generico Questo metodo chiama in modo ricorsivo IMoniker::P arseDisplayName nel componente più a destra del composito, passando tutto il resto come parametro pmkToLeft per tale chiamata.
Moniker elemento Se pmkToLeft è NULL, questo metodo restituisce MK_E_SYNTAX. In caso contrario, il metodo chiama IMoniker::BindToObject nel parametro pmkToLeft , richiedendo un puntatore all'interfaccia IOleItemContainer . Il metodo chiama quindi IOleItemContainer::GetObject, richiedendo un puntatore all'interfaccia IParseDisplayName all'oggetto identificato dal moniker e passa il nome visualizzato a IParseDisplayName::P arseDisplayName.
Moniker OBJREF Se pmkToLeft non è NULL, questo metodo restituisce MK_E_SYNTAX.
Moniker puntatore Questo metodo esegue una query sul puntatore di cui è stato eseguito il wrapping per l'interfaccia IParseDisplayName e passa il nome visualizzato a IParseDisplayName::P arseDisplayName.
Moniker URL Analizza una stringa URL completa o parziale in un moniker dei risultati (ppmkOut). Se szDisplayName rappresenta una stringa URL completa ,ad esempio "http://foo.com/default.html", il risultato è un nuovo moniker URL completo. Se szDisplayName rappresenta una stringa DI URL parziale, ad esempio ".. \default.html"), il risultato è un URL completo che accetta il contesto dal contesto di binding SZ_URLCONTEXT parametro-oggetto o da questo moniker URL. Ad esempio, se il moniker di contesto era "http://foo.com/pub/list.html" e szDisplayName era ".. \default.html", il moniker URL risultante rappresenterebbe "http://foo.com/default.html".

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione objidl.h

Vedi anche

Imoniker

IParseDisplayName

MkParseDisplayName