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 |