Condividi tramite


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

Vedi anche

COLORREF

GetSysColor

RGB