UpdateLayeredWindow, fonction (winuser.h)

Met à jour la position, la taille, la forme, le contenu et la transparence d'une fenêtre superposée.

Syntaxe

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

Paramètres

[in] hWnd

Type : HWND

Handle vers une fenêtre en couches. Une fenêtre en couches est créée en spécifiant WS_EX_LAYERED lors de la création de la fenêtre avec la fonction CreateWindowEx .

Windows 8 : le style WS_EX_LAYERED est pris en charge pour les fenêtres de niveau supérieur et les fenêtres enfants. Les versions précédentes de Windows prennent en charge WS_EX_LAYERED uniquement pour les fenêtres de niveau supérieur.

[in, optional] hdcDst

Type : HDC

Handle vers un contrôleur de domaine pour l’écran. Ce handle est obtenu en spécifiant NULL lors de l’appel de la fonction GetDC . Il est utilisé pour la correspondance des couleurs de palette lorsque le contenu de la fenêtre est mis à jour. Si hdcDst a la valeur NULL, la palette par défaut est utilisée.

Si hdcSrc a la valeur NULL, hdcDst doit avoir la valeur NULL.

[in, optional] pptDst

Type : POINT*

Pointeur vers une structure qui spécifie la nouvelle position de l’écran de la fenêtre superposée. Si la position actuelle ne change pas, pptDst peut avoir la valeur NULL.

[in, optional] psize

Type : SIZE*

Pointeur vers une structure qui spécifie la nouvelle taille de la fenêtre en couches. Si la taille de la fenêtre ne change pas, psize peut être NULL. Si hdcSrc a la valeur NULL, psize doit être NULL.

[in, optional] hdcSrc

Type : HDC

Handle vers un contrôleur de domaine pour la surface qui définit la fenêtre en couches. Ce handle peut être obtenu en appelant la fonction CreateCompatibleDC . Si la forme et le contexte visuel de la fenêtre ne changent pas, hdcSrc peut avoir la valeur NULL.

[in, optional] pptSrc

Type : POINT*

Pointeur vers une structure qui spécifie l’emplacement de la couche dans le contexte de l’appareil. Si hdcSrc a la valeur NULL, pptSrc doit avoir la valeur NULL.

[in] crKey

Type : COLORREF

Structure qui spécifie la clé de couleur à utiliser lors de la composition de la fenêtre superposée. Pour générer un COLORREF, utilisez la macro RVB .

[in, optional] pblend

Type : BLENDFUNCTION*

Pointeur vers une structure qui spécifie la valeur de transparence à utiliser lors de la composition de la fenêtre en couches.

[in] dwFlags

Type : DWORD

Ce paramètre peut prendre les valeurs suivantes.

Valeur Signification
ULW_ALPHA
0x00000002
Utilisez pblend comme fonction de fusion. Si le mode d’affichage est inférieur ou égal à 256 couleurs, l’effet de cette valeur est identique à l’effet de ULW_OPAQUE.
ULW_COLORKEY
0x00000001
Utilisez crKey comme couleur de transparence.
ULW_OPAQUE
0x00000004
Dessinez une fenêtre opaque en couches.
ULW_EX_NORESIZE
0x00000008
Forcez l’échec de la fonction UpdateLayeredWindowIndirect si la taille de fenêtre actuelle ne correspond pas à la taille spécifiée dans le psize.
 

Si hdcSrc a la valeur NULL, dwFlags doit être égal à zéro.

Valeur retournée

Type : BOOL

Si la fonction réussit, la valeur de retour est différente de zéro.

Si la fonction échoue, la valeur de retour est égale à zéro. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.

Remarques

Le contrôleur de domaine source doit contenir la surface qui définit le contenu visible de la fenêtre en couches. Par exemple, vous pouvez sélectionner une bitmap dans un contexte d’appareil obtenu en appelant la fonction CreateCompatibleDC .

Une application doit appeler SetLayout sur le contexte de l’appareil hdcSrc pour définir correctement le mode de mise en miroir. SetLayout miroir correctement tous les dessins dans un HDC tout en conservant correctement le glyphe de texte et l’ordre de direction bitmap (facultatif). Il ne peut pas modifier le dessin directement dans les bits d’une bitmap indépendante de l’appareil (DIB). Pour plus d’informations, consultez Disposition et mise en miroir des fenêtres.

La fonction UpdateLayeredWindow conserve l’apparence de la fenêtre à l’écran. Les fenêtres situées sous une fenêtre superposée n’ont pas besoin d’être repeintes lorsqu’elles sont découvertes en raison d’un appel à UpdateLayeredWindow, car le système les repeint automatiquement. Cela permet une animation fluide de la fenêtre superposée.

UpdateLayeredWindow met toujours à jour toute la fenêtre. Pour mettre à jour une partie d’une fenêtre, utilisez le WM_PAINT traditionnel et définissez la valeur de fusion à l’aide de SetLayeredWindowAttributes.

Pour de meilleures performances de dessin par la fenêtre superposée et toutes les fenêtres sous-jacentes, la fenêtre superposée doit être aussi petite que possible. Une application doit également traiter le message et recréer ses fenêtres superposées lorsque la profondeur de couleur de l’affichage change.

Pour plus d’informations, consultez Fenêtres en couches.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête winuser.h (inclure Windows.h)
Bibliothèque User32.lib
DLL User32.dll
Ensemble d’API ext-ms-win-ntuser-window-l1-1-1 (introduit dans Windows 8.1)

Voir aussi

AlphaBlend

Conceptuel

CreateCompatibleBitmap

Autres ressources

Référence

SetWindowLong

SetWindowPos

TransparentBlt

UpdateLayeredWindowIndirect

Windows