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 |