Bagikan melalui


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

Lihat juga

COLORREF

GetSysColor

RGB