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

Confira também

COLORREF

Getsyscolor

RGB