Función UpdateLayeredWindow (winuser.h)

Actualiza la posición, el tamaño, la forma, el contenido y la transparencia de una ventana superpuesta.

Sintaxis

BOOL UpdateLayeredWindow(
  [in]           HWND          hWnd,
  [in, optional] HDC           hdcDst,
  [in, optional] POINT         *pptDst,
  [in, optional] SIZE          *psize,
  [in, optional] HDC           hdcSrc,
  [in, optional] POINT         *pptSrc,
  [in]           COLORREF      crKey,
  [in, optional] BLENDFUNCTION *pblend,
  [in]           DWORD         dwFlags
);

Parámetros

[in] hWnd

Tipo: HWND

Identificador de una ventana superpuesta. Se crea una ventana superpuesta especificando WS_EX_LAYERED al crear la ventana con la función CreateWindowEx .

Windows 8: el estilo de WS_EX_LAYERED es compatible con ventanas de nivel superior y ventanas secundarias. Las versiones anteriores de Windows solo admiten WS_EX_LAYERED para ventanas de nivel superior.

[in, optional] hdcDst

Tipo: HDC

Identificador de un controlador de dominio para la pantalla. Este identificador se obtiene especificando NULL al llamar a la función GetDC . Se usa para la coincidencia de colores de paleta cuando se actualiza el contenido de la ventana. Si hdcDst es NULL, se usará la paleta predeterminada.

Si hdcSrc es NULL, hdcDst debe ser NULL.

[in, optional] pptDst

Tipo: POINT*

Puntero a una estructura que especifica la nueva posición de pantalla de la ventana superpuesta. Si la posición actual no cambia, pptDst puede ser NULL.

[in, optional] psize

Tipo: SIZE*

Puntero a una estructura que especifica el nuevo tamaño de la ventana superpuesta. Si el tamaño de la ventana no cambia, psize puede ser NULL. Si hdcSrc es NULL, psize debe ser NULL.

[in, optional] hdcSrc

Tipo: HDC

Identificador de un controlador de dominio para la superficie que define la ventana superpuesta. Este identificador se puede obtener llamando a la función CreateCompatibleDC . Si la forma y el contexto visual de la ventana no cambian, hdcSrc puede ser NULL.

[in, optional] pptSrc

Tipo: POINT*

Puntero a una estructura que especifica la ubicación de la capa en el contexto del dispositivo. Si hdcSrc es NULL, pptSrc debe ser NULL.

[in] crKey

Tipo: COLORREF

Estructura que especifica la clave de color que se va a usar al componer la ventana superpuesta. Para generar un COLORREF, use la macro RGB .

[in, optional] pblend

Tipo: BLENDFUNCTION*

Puntero a una estructura que especifica el valor de transparencia que se va a usar al componer la ventana superpuesta.

[in] dwFlags

Tipo: DWORD

Este parámetro puede ser uno de los valores siguientes.

Valor Significado
ULW_ALPHA
0x00000002
Use pblend como función blend. Si el modo de visualización es de 256 colores o menos, el efecto de este valor es el mismo que el efecto de ULW_OPAQUE.
ULW_COLORKEY
0x00000001
Use crKey como color de transparencia.
ULW_OPAQUE
0x00000004
Dibuje una ventana superpuesta opaca.
ULW_EX_NORESIZE
0x00000008
Forzar que se produzca un error en la función UpdateLayeredWindowIndirect si el tamaño de la ventana actual no coincide con el tamaño especificado en psize.
 

Si hdcSrc es NULL, dwFlags debe ser cero.

Valor devuelto

Tipo: BOOL

Si la función se realiza correctamente, el valor devuelto es distinto de cero.

Si la función no se realiza correctamente, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError.

Comentarios

El controlador de dominio de origen debe contener la superficie que define el contenido visible de la ventana superpuesta. Por ejemplo, puede seleccionar un mapa de bits en un contexto de dispositivo obtenido llamando a la función CreateCompatibleDC .

Una aplicación debe llamar a SetLayout en el contexto del dispositivo hdcSrc para establecer correctamente el modo de creación de reflejo. SetLayout reflejará correctamente todo el dibujo en una HDC , conservando correctamente el glifo de texto y el orden de dirección del mapa de bits (opcionalmente). No se puede modificar el dibujo directamente en los bits de un mapa de bits independiente del dispositivo (DIB). Para obtener más información, vea Diseño de ventana y creación de reflejo.

La función UpdateLayeredWindow mantiene la apariencia de la ventana en la pantalla. No es necesario volver a dibujar las ventanas debajo de una ventana superpuesta cuando se descubran debido a una llamada a UpdateLayeredWindow, ya que el sistema los volverá a pintar automáticamente. Esto permite una animación perfecta de la ventana superpuesta.

UpdateLayeredWindow siempre actualiza toda la ventana. Para actualizar parte de una ventana, use el WM_PAINT tradicional y establezca el valor de mezcla mediante SetLayeredWindowAttributes.

Para obtener el mejor rendimiento de dibujo por la ventana superpuesta y las ventanas subyacentes, la ventana superpuesta debe ser lo más pequeña posible. Una aplicación también debe procesar el mensaje y volver a crear sus ventanas superpuestas cuando cambia la profundidad del color de la pantalla.

Para obtener más información, vea Ventanas superpuestas.

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 winuser.h (incluya Windows.h)
Library User32.lib
Archivo DLL User32.dll
Conjunto de API ext-ms-win-ntuser-window-l1-1-1 (introducido en Windows 8.1)

Consulte también

AlphaBlend

Conceptual

CreateCompatibleBitmap

Otros recursos

Referencia

SetWindowLong

SetWindowPos

TransparentBlt

UpdateLayeredWindowIndirect

Windows