Fungsi SetSysColors (winuser.h)
Mengatur warna untuk elemen tampilan yang ditentukan. Elemen tampilan adalah berbagai bagian jendela dan tampilan yang muncul di layar tampilan sistem.
Sintaks
BOOL SetSysColors(
[in] int cElements,
[in] const INT *lpaElements,
[in] const COLORREF *lpaRgbValues
);
Parameter
[in] cElements
Jenis: int
Jumlah elemen tampilan dalam array lpaElements .
[in] lpaElements
Jenis: const INT*
Array bilangan bulat yang menentukan elemen tampilan yang akan diubah. Untuk daftar elemen tampilan, lihat GetSysColor.
[in] lpaRgbValues
Jenis: const COLORREF*
Array nilai COLORREF yang berisi nilai warna merah, hijau, biru (RGB) baru untuk elemen tampilan dalam array yang ditunjukkan oleh parameter lpaElements .
Untuk menghasilkan COLORREF, gunakan makro RGB .
Nilai kembali
Jenis: BOOL
Jika fungsi berhasil, nilai yang dikembalikan adalah nilai bukan nol.
Jika fungsi gagal, nilai yang dikembalikan adalah nol. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.
Keterangan
Fungsi SetSysColors mengirimkan pesan WM_SYSCOLORCHANGE ke semua jendela untuk memberi tahu mereka tentang perubahan warna. Ini juga mengarahkan sistem untuk mengecat ulang bagian yang terpengaruh dari semua jendela yang saat ini terlihat.
Yang terbaik adalah menghormati pengaturan warna yang ditentukan oleh pengguna. Jika Anda menulis aplikasi untuk memungkinkan pengguna mengubah warna, maka tepat untuk menggunakan fungsi ini. Namun, fungsi ini hanya memengaruhi sesi saat ini. Warna baru tidak disimpan ketika sistem berakhir.
Contoh
Contoh berikut menunjukkan penggunaan fungsi GetSysColor dan SetSysColors . Pertama, contoh menggunakan GetSysColor untuk mengambil warna latar belakang jendela dan caption aktif dan menampilkan nilai merah, hijau, biru (RGB) dalam notasi heksadesimal. Selanjutnya, contoh menggunakan SetSysColors untuk mengubah warna latar belakang jendela menjadi abu-abu muda dan bilah judul aktif menjadi ungu gelap. Setelah penundaan 10 detik, contoh memulihkan warna sebelumnya untuk elemen-elemen ini menggunakan 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);
}
Persyaratan
Klien minimum yang didukung | Windows 2000 Professional [hanya aplikasi desktop] |
Server minimum yang didukung | Windows 2000 Server [hanya aplikasi desktop] |
Target Platform | Windows |
Header | winuser.h (termasuk Windows.h) |
Pustaka | User32.lib |
DLL | User32.dll |