Compartir a través de


Función CreateGenericComposite (objbase.h)

Realiza una composición genérica de dos monikers y proporciona un puntero al moniker compuesto resultante.

Sintaxis

HRESULT CreateGenericComposite(
  [in, optional] LPMONIKER pmkFirst,
  [in, optional] LPMONIKER pmkRest,
  [out]          LPMONIKER *ppmkComposite
);

Parámetros

[in, optional] pmkFirst

Puntero al moniker que se va a componer a la izquierda del moniker al que apunta pmkRest. Puede apuntar a cualquier tipo de moniker, incluido un compuesto genérico.

[in, optional] pmkRest

Puntero al moniker que se va a componer a la derecha del moniker al que apunta pmkFirst . Puede apuntar a cualquier tipo de moniker compatible con el tipo del moniker pmkRest , incluido un compuesto genérico.

[out] ppmkComposite

Dirección de una variable de puntero IMoniker* que recibe el puntero de interfaz al objeto de moniker compuesto que es el resultado de la composición de pmkFirst y pmkRest. Este objeto admite la implementación del moniker compuesto OLE de IMoniker. Cuando se ejecuta correctamente, la función ha llamado a AddRef en el moniker y el autor de la llamada es responsable de llamar a Release. Si pmkFirst o pmkRest son NULL, el puntero proporcionado es el que no es NULL. Si pmkFirst y pmkRest son NULL, o si se produce un error, el puntero devuelto es NULL.

Valor devuelto

Esta función puede devolver el valor devuelto estándar E_OUTOFMEMORY, así como los siguientes valores.

Código devuelto Descripción
S_OK
Los monikers de entrada se redactaron correctamente.
MK_E_SYNTAX
Los dos monikers no se pudieron componer debido a un error en la sintaxis de una ruta de acceso (por ejemplo, si pmkFirst y pmkRest son monikers de archivo basados en rutas de acceso absolutas).

Comentarios

CreateGenericComposite combina dos monikers en uno. Las clases de moniker que se unen pueden ser diferentes, sujeto solo a las reglas de composición. Llame a esta función solo si está escribiendo una nueva clase de moniker mediante la implementación de la interfaz IMoniker , dentro de una implementación de IMoniker::ComposeWith que incluye la funcionalidad de composición genérica.

Los proveedores de moniker deben llamar a ComposeWith para componer dos monikers juntos. Las implementaciones de ComposeWith deben (al igual que las implementaciones OLE) intentar, cuando sea razonable para la clase, realizar primero composiciones no genéricas, en las que se combinan dos monikers de la misma clase. Si esto no es posible, la implementación puede llamar a CreateGenericComposite para realizar una composición genérica, que combina dos monikers de clases diferentes, dentro de las reglas de composición. Puede definir nuevos tipos de composiciones no genéricas si escribe una nueva clase de moniker.

Durante el proceso de composición de los dos monikers, CreateGenericComposite hace todas las simplificaciones posibles. Considere el ejemplo donde pmkFirst es el moniker compuesto genérico, A + B + C y pmkRest es el moniker compuesto genérico, C -1 + B -1 + Z (donde C -1 es el inverso de C). La función compone primero C a C -1, que no se compone de nada. A continuación, compone B y B -1 en nada. Por último, compone A a Z y proporciona un puntero al moniker compuesto genérico, A + Z.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [aplicaciones de escritorio | Aplicaciones para UWP]
Servidor mínimo compatible Windows 2000 Server [aplicaciones de escritorio | Aplicaciones para UWP]
Plataforma de destino Windows
Encabezado objbase.h
Library Ole32.lib
Archivo DLL Ole32.dll
Conjunto de API ext-ms-win-com-ole32-l1-1-5 (introducido en Windows 10, versión 10.0.15063)

Consulte también

Imoniker

IMoniker::ComposeWith