Compartir a través de


Función SetSysColors (winuser.h)

Establece los colores de los elementos de visualización especificados. Los elementos de visualización son las distintas partes de una ventana y la pantalla que aparecen en la pantalla de pantalla del sistema.

Sintaxis

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

Parámetros

[in] cElements

Tipo: int

Número de elementos para mostrar de la matriz lpaElements .

[in] lpaElements

Tipo: const INT*

Matriz de enteros que especifican los elementos de visualización que se van a cambiar. Para obtener una lista de elementos para mostrar, vea GetSysColor.

[in] lpaRgbValues

Tipo: const COLORREF*

Matriz de valores COLORREF que contienen los nuevos valores de color rojo, verde, azul (RGB) para los elementos de presentación de la matriz a los que apunta el parámetro lpaElements .

Para generar un COLORREF, use la macro RGB .

Valor devuelto

Tipo: BOOL

Si la función se ejecuta correctamente, el valor devuelto es un valor distinto de cero.

Si la función no se realiza correctamente, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError.

Comentarios

La función SetSysColors envía un mensaje WM_SYSCOLORCHANGE a todas las ventanas para informarles del cambio de color. También dirige al sistema para volver a dibujar las partes afectadas de todas las ventanas visibles actualmente.

Es mejor respetar la configuración de color especificada por el usuario. Si está escribiendo una aplicación para permitir que el usuario cambie los colores, es adecuado usar esta función. Sin embargo, esta función solo afecta a la sesión actual. Los nuevos colores no se guardan cuando finaliza el sistema.

Ejemplos

En el ejemplo siguiente se muestra el uso de las funciones GetSysColor y SetSysColors . En primer lugar, en el ejemplo se usa GetSysColor para recuperar los colores del fondo de la ventana y el subtítulo activo y se muestran los valores rojo, verde, azul (RGB) en notación hexadecimal. A continuación, en el ejemplo se usan SetSysColors para cambiar el color del fondo de la ventana a gris claro y las barras de título activas a púrpura oscuro. Después de un retraso de 10 segundos, el ejemplo restaura los colores anteriores para estos elementos mediante 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); 
}

Requisitos

   
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado winuser.h (incluya Windows.h)
Library User32.lib
Archivo DLL User32.dll

Consulte también

COLORREF

GetSysColor

RGB