Freigeben über


SetSysColors-Funktion (winuser.h)

Legt die Farben für die angegebenen Anzeigeelemente fest. Anzeigeelemente sind die verschiedenen Teile eines Fensters und die Anzeige, die auf dem Systemanzeigebildschirm angezeigt werden.

Syntax

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

Parameter

[in] cElements

Typ: int

Die Anzahl der Anzeigeelemente im lpaElements-Array .

[in] lpaElements

Typ: const INT*

Ein Array von ganzen Zahlen, die die zu ändernden Anzeigeelemente angeben. Eine Liste der Anzeigeelemente finden Sie unter GetSysColor.

[in] lpaRgbValues

Typ: const COLORREF*

Ein Array von COLORREF-Werten , die die neuen RGB-Farbwerte (Rot, Grün, Blau) für die Anzeigeelemente im Array enthalten, auf das der lpaElements-Parameter verweist.

Verwenden Sie zum Generieren einer COLORREF das RGB-Makro .

Rückgabewert

Typ: BOOL

Wenn die Funktion erfolgreich ist, ist der Rückgabewert ein Wert ungleich null.

Wenn die Funktion fehlerhaft ist, ist der Rückgabewert null. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.

Hinweise

Die SetSysColors-Funktion sendet eine WM_SYSCOLORCHANGE-Nachricht an alle Fenster, um sie über die Änderung der Farbe zu informieren. Außerdem wird das System aufgefordert, die betroffenen Teile aller derzeit sichtbaren Fenster neu zu streichen.

Es empfiehlt sich, die vom Benutzer angegebenen Farbeinstellungen zu berücksichtigen. Wenn Sie eine Anwendung schreiben, damit der Benutzer die Farben ändern kann, empfiehlt es sich, diese Funktion zu verwenden. Diese Funktion wirkt sich jedoch nur auf die aktuelle Sitzung aus. Die neuen Farben werden nicht gespeichert, wenn das System beendet wird.

Beispiele

Im folgenden Beispiel wird die Verwendung der Funktionen GetSysColor und SetSysColors veranschaulicht. Zunächst verwendet das Beispiel GetSysColor, um die Farben des Fensterhintergrunds und der aktiven Untertitel abzurufen und die roten, grünen, blauen (RGB)-Werte in hexadezimaler Schreibweise anzuzeigen. Als Nächstes wird setSysColors verwendet, um die Farbe des Fensterhintergrunds in hellgrau und die aktiven Titelleisten in dunkelviolett zu ändern. Nach einer Verzögerung von 10 Sekunden werden im Beispiel die vorherigen Farben für diese Elemente mithilfe von SetSysColors wiederhergestellt.

#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); 
}

Anforderungen

   
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile winuser.h (windows.h einschließen)
Bibliothek User32.lib
DLL User32.dll

Weitere Informationen

COLORREF

GetSysColor

RGB