SetSysColors, fonction (winuser.h)

Définit les couleurs des éléments d’affichage spécifiés. Les éléments d’affichage sont les différentes parties d’une fenêtre et l’affichage qui s’affichent sur l’écran d’affichage du système.

Syntaxe

BOOL SetSysColors(
  [in] int            cElements,
  [in] const INT      *lpaElements,
  [in] const COLORREF *lpaRgbValues
);

Paramètres

[in] cElements

Type : int

Nombre d’éléments d’affichage dans le tableau lpaElements .

[in] lpaElements

Type : const INT*

Tableau d’entiers qui spécifient les éléments d’affichage à modifier. Pour obtenir la liste des éléments d’affichage, consultez GetSysColor.

[in] lpaRgbValues

Type : const COLORREF*

Tableau de valeurs COLORREF qui contiennent les nouvelles valeurs de couleur rouge, vert et bleu (RVB) pour les éléments d’affichage dans le tableau vers lequel pointe le paramètre lpaElements .

Pour générer un COLORREF, utilisez la macro RVB .

Valeur retournée

Type : BOOL

Si la fonction réussit, la valeur de retour est une valeur 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

La fonction SetSysColors envoie un message WM_SYSCOLORCHANGE à toutes les fenêtres pour les informer du changement de couleur. Il indique également au système de repeindre les parties affectées de toutes les fenêtres actuellement visibles.

Il est préférable de respecter les paramètres de couleur spécifiés par l’utilisateur. Si vous écrivez une application pour permettre à l’utilisateur de modifier les couleurs, il est approprié d’utiliser cette fonction. Toutefois, cette fonction affecte uniquement la session active. Les nouvelles couleurs ne sont pas enregistrées à l’arrêt du système.

Exemples

L’exemple suivant illustre l’utilisation des fonctions GetSysColor et SetSysColors . Tout d’abord, l’exemple utilise GetSysColor pour récupérer les couleurs de l’arrière-plan de la fenêtre et des légende actives et affiche les valeurs rouge, verte et bleue (RVB) en notation hexadécimale. Ensuite, l’exemple utilise SetSysColors pour modifier la couleur de l’arrière-plan de la fenêtre en gris clair et les barres de titre actives en violet foncé. Après un délai de 10 secondes, l’exemple restaure les couleurs précédentes pour ces éléments à l’aide de SetSysColors.

#include <windows.h>
#include <stdio.h>
#pragma comment(lib, "user32.lib")

void main()
{
    int aElements[2] = {COLOR_WINDOW, COLOR_ACTIVECAPTION};
    DWORD aOldColors[2];
    DWORD aNewColors[2];

    // Get the current color of the window background. 
 
    aOldColors[0] = GetSysColor(aElements[0]); 

    printf("Current window color: {0x%x, 0x%x, 0x%x}\n", 
        GetRValue(aOldColors[0]), 
        GetGValue(aOldColors[0]), 
        GetBValue(aOldColors[0]));

    // Get the current color of the active caption. 
 
    aOldColors[1] = GetSysColor(aElements[1]); 

    printf("Current active caption color: {0x%x, 0x%x, 0x%x}\n", 
        GetRValue(aOldColors[1]), 
        GetGValue(aOldColors[1]), 
        GetBValue(aOldColors[1]));

    // Define new colors for the elements

    aNewColors[0] = RGB(0x80, 0x80, 0x80);  // light gray 
    aNewColors[1] = RGB(0x80, 0x00, 0x80);  // dark purple 

    printf("\nNew window color: {0x%x, 0x%x, 0x%x}\n", 
        GetRValue(aNewColors[0]), 
        GetGValue(aNewColors[0]), 
        GetBValue(aNewColors[0]));

    printf("New active caption color: {0x%x, 0x%x, 0x%x}\n", 
        GetRValue(aNewColors[1]), 
        GetGValue(aNewColors[1]), 
        GetBValue(aNewColors[1]));

    // Set the elements defined in aElements to the colors defined
    // in aNewColors

    SetSysColors(2, aElements, aNewColors); 

    printf("\nWindow background and active border have been changed.\n");
    printf("Reverting to previous colors in 10 seconds...\n");

    Sleep(10000);    

    // Restore the elements to their original colors

    SetSysColors(2, aElements, aOldColors); 
}

Spécifications

   
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

Voir aussi

COLORREF

GetSysColor

RGB