Condividi tramite


Funzione UpdateLayeredWindow (winuser.h)

Aggiorna posizione, dimensioni, forma, contenuto e traslucidità di una finestra a livelli.

Sintassi

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
);

Parametri

[in] hWnd

Tipo: HWND

Handle in una finestra a livelli. Viene creata una finestra a livelli specificando WS_EX_LAYERED durante la creazione della finestra con la funzione CreateWindowEx .

Windows 8: lo stile di WS_EX_LAYERED è supportato per le finestre di primo livello e le finestre figlio. Le versioni precedenti di Windows supportano WS_EX_LAYERED solo per le finestre di primo livello.

[in, optional] hdcDst

Tipo: HDC

Handle a un controller di dominio per la schermata. Questo handle viene ottenuto specificando NULL quando si chiama la funzione GetDC . Viene usato per la corrispondenza dei colori della tavolozza quando il contenuto della finestra viene aggiornato. Se hdcDst è NULL, verrà usata la tavolozza predefinita.

Se hdcSrc è NULL, hdcDst deve essere NULL.

[in, optional] pptDst

Tipo: POINT*

Puntatore a una struttura che specifica la nuova posizione dello schermo della finestra a livelli. Se la posizione corrente non cambia, pptDst può essere NULL.

[in, optional] psize

Tipo: SIZE*

Puntatore a una struttura che specifica le nuove dimensioni della finestra a livelli. Se le dimensioni della finestra non cambiano, psize può essere NULL. Se hdcSrc è NULL, psize deve essere NULL.

[in, optional] hdcSrc

Tipo: HDC

Handle a un controller di dominio per la superficie che definisce la finestra a livelli. Questo handle può essere ottenuto chiamando la funzione CreateCompatibleDC . Se la forma e il contesto visivo della finestra non cambiano, hdcSrc può essere NULL.

[in, optional] pptSrc

Tipo: POINT*

Puntatore a una struttura che specifica la posizione del livello nel contesto del dispositivo. Se hdcSrc è NULL, pptSrc deve essere NULL.

[in] crKey

Tipo: COLORREF

Struttura che specifica la chiave di colore da usare durante la composizione della finestra a livelli. Per generare un COLORREF, usare la macro RGB .

[in, optional] pblend

Tipo: BLENDFUNCTION*

Puntatore a una struttura che specifica il valore di trasparenza da usare durante la composizione della finestra a livelli.

[in] dwFlags

Tipo: DWORD

Questo parametro può avere uno dei valori seguenti.

Valore Significato
ULW_ALPHA
0x00000002
Usare pblend come funzione blend. Se la modalità di visualizzazione è 256 colori o meno, l'effetto di questo valore è uguale all'effetto di ULW_OPAQUE.
ULW_COLORKEY
0x00000001
Usare crKey come colore di trasparenza.
ULW_OPAQUE
0x00000004
Disegna una finestra a livelli opaca.
ULW_EX_NORESIZE
0x00000008
Forzare la funzione UpdateLayeredWindowIndirect a non riuscire se le dimensioni correnti della finestra non corrispondono alle dimensioni specificate nella psize.
 

Se hdcSrc è NULL, dwFlags deve essere zero.

Valore restituito

Tipo: BOOL

Se la funzione ha esito positivo, il valore restituito è diverso da zero.

Se la funzione ha esito negativo, il valore restituito è zero. Per informazioni dettagliate sull'errore, chiamare GetLastError.

Commenti

Il controller di dominio di origine deve contenere la superficie che definisce il contenuto visibile della finestra a livelli. Ad esempio, è possibile selezionare una bitmap in un contesto di dispositivo ottenuto chiamando la funzione CreateCompatibleDC .

Un'applicazione deve chiamare SetLayout nel contesto del dispositivo hdcSrc per impostare correttamente la modalità di mirroring. SetLayout esegue correttamente il mirroring di tutti i disegni in un HDC mantenendo correttamente l'ordine di direzione del testo e (facoltativamente) bitmap. Non può modificare il disegno direttamente nei bit di una bitmap indipendente dal dispositivo (DIB). Per altre informazioni, vedere Layout finestra e mirroring.

La funzione UpdateLayeredWindow mantiene l'aspetto della finestra sullo schermo. Le finestre sotto una finestra a livelli non devono essere ricompigliate quando vengono rilevate a causa di una chiamata a UpdateLayeredWindow, perché il sistema li ricompiglia automaticamente. Ciò consente un'animazione senza problemi della finestra a livelli.

UpdateLayeredWindow aggiorna sempre l'intera finestra. Per aggiornare la parte di una finestra, usare la WM_PAINT tradizionale e impostare il valore di blend usando SetLayeredWindowAttributes.

Per ottenere prestazioni di disegno ottimali dalla finestra a livelli e da qualsiasi finestra sottostante, la finestra a livelli deve essere il più piccola possibile. Un'applicazione deve anche elaborare il messaggio e ricrearne le finestre a livelli quando la profondità del colore della visualizzazione cambia.

Per altre informazioni, vedere Windows a livelli.

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 winuser.h (include Windows.h)
Libreria User32.lib
DLL User32.dll
Set di API ext-ms-win-ntuser-window-l1-1-1 (introdotto in Windows 8.1)

Vedi anche

AlfaBlend

Informazioni concettuali

CreateCompatibleBitmap

Altre risorse

Riferimento

Setwindowlong

Setwindowpos

TransparentBlt

UpdateLayeredWindowIndirect

Windows