Função SetSysColors (winuser.h)
Define as cores dos elementos de exibição especificados. Os elementos de exibição são as várias partes de uma janela e a exibição que aparecem na tela de exibição do sistema.
Sintaxe
BOOL SetSysColors(
[in] int cElements,
[in] const INT *lpaElements,
[in] const COLORREF *lpaRgbValues
);
Parâmetros
[in] cElements
Tipo: int
O número de elementos de exibição na matriz lpaElements .
[in] lpaElements
Tipo: const INT*
Uma matriz de inteiros que especifica os elementos de exibição a serem alterados. Para obter uma lista de elementos de exibição, consulte GetSysColor.
[in] lpaRgbValues
Tipo: const COLORREF*
Uma matriz de valores COLORREF que contêm os novos valores de cor vermelho, verde, azul (RGB) para os elementos de exibição na matriz apontada pelo parâmetro lpaElements .
Para gerar um COLORREF, use a macro RGB .
Valor retornado
Tipo: BOOL
Se a função for bem-sucedida, o valor retornado será um valor diferente de zero.
Se a função falhar, o valor retornado será zero. Para obter informações de erro estendidas, chame GetLastError.
Comentários
A função SetSysColors envia uma mensagem WM_SYSCOLORCHANGE para todas as janelas para informá-las sobre a alteração de cor. Ele também direciona o sistema para repintar as partes afetadas de todas as janelas visíveis no momento.
É melhor respeitar as configurações de cor especificadas pelo usuário. Se você estiver escrevendo um aplicativo para permitir que o usuário altere as cores, será apropriado usar essa função. No entanto, essa função afeta apenas a sessão atual. As novas cores não são salvas quando o sistema é encerrado.
Exemplos
O exemplo a seguir demonstra o uso das funções GetSysColor e SetSysColors . Primeiro, o exemplo usa GetSysColor para recuperar as cores da tela de fundo da janela e as legenda ativas e exibe os valores vermelho, verde, azul (RGB) na notação hexadecimal. Em seguida, o exemplo usa SetSysColors para alterar a cor da tela de fundo da janela para cinza claro e as barras de título ativas para roxo escuro. Após um atraso de 10 segundos, o exemplo restaura as cores anteriores desses elementos 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);
}
Requisitos
Cliente mínimo com suporte | Windows 2000 Professional [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows 2000 Server [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | winuser.h (inclua Windows.h) |
Biblioteca | User32.lib |
DLL | User32.dll |