WM_CTLCOLORSTATIC message

Un contrôle statique, ou un contrôle d’édition en lecture seule ou désactivé, envoie le message WM_CTLCOLORSTATIC à sa fenêtre parente lorsque le contrôle est sur le point d’être dessiné. En répondant à ce message, la fenêtre parente peut utiliser le handle de contexte d’appareil spécifié pour définir le texte au premier plan et les couleurs d’arrière-plan du contrôle statique.

Une fenêtre reçoit ce message via sa fonction WindowProc.

WM_CTLCOLORSTATIC

    WPARAM wParam;
    LPARAM lParam; 

Paramètres

wParam

Gérez le contexte de l’appareil pour la fenêtre de contrôle statique.

lParam

Gérez le contrôle statique.

Valeur retournée

Si une application traite ce message, la valeur de retour est un handle vers un pinceau que le système utilise pour peindre l’arrière-plan du contrôle statique.

Remarques

Si l’application retourne un pinceau qu’elle a créé (par exemple, à l’aide de la fonction CreateSolidBrush ou CreateBrushIndirect ), l’application doit libérer le pinceau. Si l’application retourne un pinceau système (par exemple, un pinceau récupéré par la fonction GetStockObject ou GetSysColorBrush ), l’application n’a pas besoin de libérer le pinceau.

Par défaut, la fonction DefWindowProc sélectionne les couleurs système par défaut pour le contrôle statique.

Vous pouvez définir la couleur d’arrière-plan du texte d’un contrôle d’édition désactivé, mais vous ne pouvez pas définir la couleur de premier plan du texte. Le système utilise toujours COLOR_GRAYTEXT.

Les contrôles de modification qui ne sont pas en lecture seule ou désactivés n’envoient pas le message WM_CTLCOLORSTATIC ; au lieu de cela, ils envoient le message WM_CTLCOLOREDIT .

Le message WM_CTLCOLORSTATIC n’est jamais envoyé entre les threads ; elle est envoyée uniquement dans le même thread.

Si une procédure de boîte de dialogue gère ce message, elle doit convertir la valeur de retour souhaitée en un INT_PTR et retourner la valeur directement. Si la procédure de boîte de dialogue retourne FALSE, la gestion des messages par défaut est effectuée. La valeur DWL_MSGRESULT définie par la fonction SetWindowLong est ignorée.

Exemples

L’exemple C++ suivant montre comment définir le texte au premier plan et les couleurs d’arrière-plan d’un contrôle statique en réponse au message WM_CTLCOLORSTATIC . La hbrBkgnd variable est une variable HBRUSH statique qui est initialisée sur NULL et stocke le pinceau d’arrière-plan entre les appels à WM_CTLCOLORSTATIC. Le pinceau doit être détruit par un appel à la fonction DeleteObject lorsqu’elle n’est plus nécessaire, généralement lorsque la boîte de dialogue associée est détruite.

   case WM_CTLCOLORSTATIC:
        {
        HDC hdcStatic = (HDC) wParam;
        SetTextColor(hdcStatic, RGB(255,255,255));
        SetBkColor(hdcStatic, RGB(0,0,0));

        if (hbrBkgnd == NULL)
        {
            hbrBkgnd = CreateSolidBrush(RGB(0,0,0));
        }
        return (INT_PTR)hbrBkgnd;
        }

Configuration requise

Condition requise Valeur
Client minimal pris en charge
Windows Vista [applications de bureau uniquement]
Serveur minimal pris en charge
Windows Server 2003 [applications de bureau uniquement]
En-tête
Winuser.h (include Windows.h)

Voir aussi

Référence

WM_CTLCOLORBTN

WM_CTLCOLOREDIT

WM_CTLCOLORLISTBOX

WM_CTLCOLORSCROLLBAR

Autres ressources

DefWindowProc

RealizePalette

SélectionnerPalette

WM_CTLCOLORDLG