Compartir a través de


Método IMoniker::GetDisplayName (objidl.h)

Recupera el nombre para mostrar del moniker.

Sintaxis

HRESULT GetDisplayName(
  [in]  IBindCtx *pbc,
  [in]  IMoniker *pmkToLeft,
  [out] LPOLESTR *ppszDisplayName
);

Parámetros

[in] pbc

Puntero a la interfaz IBindCtx en el contexto de enlace que se usará en esta operación. 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

Si el moniker forma parte de un moniker compuesto, puntero al moniker a la izquierda de este moniker. Este parámetro se usa principalmente por los implementadores de moniker para permitir la cooperación entre los distintos componentes de un moniker compuesto. Los clientes de moniker deben pasar NULL.

[out] ppszDisplayName

Dirección de una variable de puntero que recibe un puntero a la cadena de nombre para mostrar del moniker. La implementación debe usar IMalloc::Alloc para asignar la cadena devuelta en ppszDisplayName y el autor de la llamada es responsable de llamar a IMalloc::Free para liberarla. Tanto el llamador como la implementación de este método usan el asignador de tareas COM devuelto por CoGetMalloc. Si se produce un error, la implementación debe establecer *ppszDisplayName en NULL.

Valor devuelto

Este método puede devolver los valores devueltos estándar E_OUTOFMEMORY, así como los valores siguientes.

Código devuelto Descripción
S_OK
El método se completó correctamente.
MK_E_EXCEEDEDDEADLINE
No se pudo completar la operación de enlace dentro del límite de tiempo especificado por la estructura BIND_OPTS del contexto de enlace.
E_NOTIMPL
No hay ningún nombre para mostrar.

Comentarios

GetDisplayName proporciona una cadena que es una representación que se puede mostrar del moniker. Un nombre para mostrar no es una representación completa del estado interno de un moniker; es simplemente un formulario que los usuarios pueden leer. Como resultado, es posible (aunque poco frecuente) que dos monikers diferentes tengan el mismo nombre para mostrar. Aunque no hay ninguna garantía de que el nombre para mostrar de un moniker se pueda volver a analizar en ese moniker al llamar a la función MkParseDisplayName con él, no hacerlo es poco frecuente.

Notas a los autores de llamadas

Es posible que recuperar el nombre para mostrar de un moniker puede ser una operación costosa. Para mejorar la eficacia, es posible que desee almacenar en caché los resultados de la primera llamada correcta a GetDisplayName, en lugar de realizar llamadas repetidas.

Notas para los implementadores

Si va a escribir una clase de moniker en la que el nombre para mostrar no cambia, simplemente almacene en caché el nombre para mostrar y proporcione el nombre almacenado en caché cuando se solicite. Si el nombre para mostrar puede cambiar con el tiempo, obtener el nombre para mostrar actual podría significar que el moniker tiene que tener acceso al almacenamiento del objeto o enlazar con el objeto, cualquiera de los cuales puede ser operaciones costosas. Si este es el caso, la implementación de GetDisplayName debe devolver MK_E_EXCEEDEDDEADLINE si el nombre no se puede recuperar por el tiempo especificado en la estructura BIND_OPTS del contexto de enlace.

Un moniker destinado a formar parte de un moniker compuesto genérico debe incluir cualquier delimitador anterior (como "") como parte de su nombre para mostrar. Por ejemplo, el nombre para mostrar devuelto por un moniker de elemento incluye el delimitador especificado cuando se creó con la función CreateItemMoniker . El nombre para mostrar de un moniker de archivo no incluye un delimitador porque siempre se espera que los monikers de archivo sean el componente situado más a la izquierda de una composición.

Notas específicas de la implementación

Implementación Notas
Anti-moniker Para cada anti-moniker incluido en este moniker, este método devuelve una instancia de "\..".
Moniker de clase El nombre para mostrar de los monikers de clase tiene la siguiente forma: clsid:string-clsid-no-curly-braces *[";" clsid-param=value]:. Por ejemplo, clsid:a7b90590-36fd-11cf-857d-00aa006d2ea4:.
Moniker de archivo Este método devuelve la ruta de acceso que representa el moniker.
Moniker compuesto genérico Este método devuelve la concatenación de los nombres para mostrar devueltos por cada moniker de componente de la composición.
Moniker de elemento Este método devuelve la concatenación del delimitador y el nombre del elemento que se especificaron cuando se creó el moniker de elemento.
Moniker de OBJREF Este método obtiene el nombre para mostrar del moniker OBJREF. El nombre para mostrar es una codificación de 64 bits que encapsula la ubicación del equipo, el punto de conexión de proceso y el identificador de puntero de interfaz (IPID) del objeto en ejecución. Para compatibilidad futura, el nombre para mostrar está restringido a caracteres que se pueden especificar como parte de una dirección URL.
Moniker de puntero Este método devuelve E_NOTIMPL.
Moniker de dirección URL El moniker de dirección URL intenta devolver su cadena de dirección URL completa. Si el moniker se creó con una cadena de dirección URL parcial (consulte CreateURLMonikerEx), primero intentará buscar un moniker de dirección URL en el contexto de enlace en SZ_URLCONTEXT y buscará a la izquierda el moniker a la izquierda para obtener información contextual. Si no puede devolver su cadena de dirección URL completa, devolverá su cadena de dirección URL parcial.

Requisitos

   
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

MkParseDisplayName