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 |