Método IMoniker::P arseDisplayName (objidl.h)

Convierte un nombre para mostrar en un moniker.

Sintaxis

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

Parámetros

[in] pbc

Puntero a la interfaz IBindCtx en el contexto de enlace que se va a usar en esta operación de enlace. El contexto de enlace almacena en caché los objetos enlazados durante el proceso de enlace, contiene parámetros que se aplican a todas las operaciones mediante el contexto de enlace y proporciona los medios por los que la implementación del moniker debe recuperar información sobre su entorno.

[in] pmkToLeft

Puntero a la interfaz IMoniker en el moniker que se ha creado a partir del nombre para mostrar hasta este punto.

[in] pszDisplayName

El nombre para mostrar restante que se va a analizar.

[out] pchEaten

Puntero a una variable que recibe el número de caracteres de pszDisplayName que se consumieron en este paso.

[out] ppmkOut

Puntero a una variable de puntero IMoniker que recibe el puntero de interfaz al moniker que se creó a partir de pszDisplayName. Cuando se ejecuta correctamente, la implementación debe llamar a AddRef en el nuevo moniker; es responsabilidad del autor de la llamada llamar a Release. Si se produce un error, la implementación establece *ppmkOut en NULL.

Valor devuelto

Este método puede devolver el valuesE_OUTOFMEMORY estándar y E_UNEXPECTED, así como los siguientes valores.

Código devuelto Descripción
S_OK
La operación de análisis se completó correctamente.
MK_E_SYNTAX
Error en la sintaxis de los componentes de entrada (pmkToLeft, este moniker y pszDisplayName). Por ejemplo, un moniker de archivo devuelve este error si pmkToLeft no es NULL y un moniker de elemento lo devuelve si pmkToLeft es NULL.
 

Este método también puede devolver los errores asociados al método IMoniker::BindToObject .

Comentarios

Notas a los autores de llamadas

Normalmente, los clientes de Moniker no llaman directamente a ParseDisplayName . En su lugar, llaman a la función MkParseDisplayName cuando quieren convertir un nombre para mostrar en un moniker (por ejemplo, en la implementación del cuadro de diálogo Vínculos para una aplicación contenedora o para implementar un lenguaje de macros que admita referencias a objetos fuera del documento). Esa función analiza primero la parte inicial del propio nombre para mostrar.

A continuación, llama a ParseDisplayName en el moniker que acaba de crear, pasando el resto del nombre para mostrar y obteniendo un nuevo moniker a cambio; este paso se repite hasta que se ha analizado todo el nombre para mostrar.

Notas para los implementadores

La implementación puede realizar este análisis por sí mismo si la clase moniker está diseñada para designar solo determinados tipos de objetos. De lo contrario, debe obtener un puntero de interfaz IParseDisplayName para el objeto identificado por el moniker-so-far (es decir, la composición de pmkToLeft y este moniker) y, a continuación, devolver los resultados de llamar a IParseDisplayName::P arseDisplayName.

Hay diferentes estrategias para obtener un puntero IParseDisplayName , como se indica a continuación:

Los objetos enlazados deben registrarse con el contexto de enlace (vea IBindCtx::RegisterObjectBound) para asegurarse de que permanecen en ejecución durante la operación de análisis.

Notas específicas de la implementación

Implementación Notas
Anti-moniker Este método devuelve E_NOTIMPL.
Moniker de clase Este método analiza el nombre para mostrar mediante el enlace a sí mismo para IParseDisplayName y pide al objeto enlazado que analice el nombre para mostrar en un moniker, como se indica a continuación.
  hr = BindToObject(pbc, pmkToLeft, IID_IParseDisplayName, (void**)&ppdn);
  if (SUCCEEDED(hr)) {
    hr = ppdn->ParseDisplayName(pbc, lpszDisplayName, pchEaten, ppmkOut);
    ppdn->Release();
  }
  return hr;

Este método intenta adquirir un puntero IParseDisplayName , primero enlazando al generador de clases para el objeto identificado por el moniker y, a continuación, enlazando al propio objeto. Si alguna de estas operaciones de enlace se realiza correctamente, el moniker de archivo pasa la parte sin analizar del nombre para mostrar al método IParseDisplayName::P arseDisplayName .

Este método devuelve MK_E_SYNTAX si pmkToLeft no es NULL.

Moniker de archivo Este método intenta adquirir un puntero IParseDisplayName , primero enlazando al generador de clases para el objeto identificado por el moniker y, a continuación, enlazando al propio objeto. Si alguna de estas operaciones de enlace se realiza correctamente, el moniker de archivo pasa la parte sin analizar del nombre para mostrar al método IParseDisplayName::P arseDisplayName .
Moniker compuesto genérico Este método llama recursivamente a IMoniker::P arseDisplayName en el componente más a la derecha del compuesto, pasando todo lo demás como el parámetro pmkToLeft para esa llamada.
Moniker de elemento Si pmkToLeft es NULL, este método devuelve MK_E_SYNTAX. De lo contrario, el método llama a IMoniker::BindToObject en el parámetro pmkToLeft y solicita un puntero de interfaz IOleItemContainer . A continuación, el método llama a IOleItemContainer::GetObject, solicitando un puntero de interfaz IParseDisplayName al objeto identificado por el moniker y pasa el nombre para mostrar a IParseDisplayName::P arseDisplayName.
OBJREF moniker Si pmkToLeft no es NULL, este método devuelve MK_E_SYNTAX.
Moniker de puntero Este método consulta el puntero ajustado para la interfaz IParseDisplayName y pasa el nombre para mostrar a IParseDisplayName::P arseDisplayName.
Moniker de dirección URL Analiza una cadena de dirección URL completa o parcial en un moniker de resultados (ppmkOut). Si szDisplayName representa una cadena de dirección URL completa (por ejemplo, "http://foo.com/default.html"), el resultado es un nuevo moniker de dirección URL completa. Si szDisplayName representa una cadena de dirección URL parcial (por ejemplo, ".. \default.html"), el resultado es una dirección URL completa que toma su contexto del SZ_URLCONTEXT parámetro de objeto del contexto de enlace o de este moniker de dirección URL. Por ejemplo, si el moniker de contexto era "http://foo.com/pub/list.html" y szDisplayName era ".. \default.html", el moniker de dirección URL resultante representaría "http://foo.com/default.html".

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado objidl.h

Consulte también

Imoniker

IParseDisplayName

MkParseDisplayName