Funzione SetSysColors (winuser.h)
Imposta i colori per gli elementi di visualizzazione specificati. Gli elementi di visualizzazione sono le varie parti di una finestra e la visualizzazione visualizzata nella schermata di visualizzazione del sistema.
Sintassi
BOOL SetSysColors(
[in] int cElements,
[in] const INT *lpaElements,
[in] const COLORREF *lpaRgbValues
);
Parametri
[in] cElements
Tipo: int
Numero di elementi visualizzati nella matrice lpaElements .
[in] lpaElements
Tipo: const INT*
Matrice di numeri interi che specificano gli elementi di visualizzazione da modificare. Per un elenco degli elementi di visualizzazione, vedere GetSysColor.
[in] lpaRgbValues
Tipo: const COLORREF*
Matrice di valori COLORREF che contengono i nuovi valori di colore rosso, verde, blu (RGB) per gli elementi di visualizzazione nella matrice a cui punta il parametro lpaElements .
Per generare un COLORREF, utilizzare la macro RGB .
Valore restituito
Tipo: BOOL
Se la funzione ha esito positivo, il valore restituito è un valore diverso da zero.
Se la funzione ha esito negativo, il valore restituito è zero. Per informazioni dettagliate sull'errore, chiamare GetLastError.
Commenti
La funzione SetSysColors invia un messaggio di WM_SYSCOLORCHANGE a tutte le finestre per informarli della modifica del colore. Indirizza inoltre il sistema a ridisegnare le parti interessate di tutte le finestre attualmente visibili.
È consigliabile rispettare le impostazioni dei colori specificate dall'utente. Se si scrive un'applicazione per consentire all'utente di modificare i colori, è opportuno usare questa funzione. Tuttavia, questa funzione influisce solo sulla sessione corrente. I nuovi colori non vengono salvati al termine del sistema.
Esempio
Nell'esempio seguente viene illustrato l'uso delle funzioni GetSysColor e SetSysColors . In primo luogo, l'esempio usa GetSysColor per recuperare i colori dello sfondo della finestra e la didascalia attiva e visualizza i valori rosso, verde, blu (RGB) nella notazione esadecimale. Nell'esempio seguente viene usato SetSysColors per modificare il colore dello sfondo della finestra in grigio chiaro e le barre del titolo attive in viola scuro. Dopo un ritardo di 10 secondi, nell'esempio vengono ripristinati i colori precedenti per questi elementi usando 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);
}
Requisiti
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 |