Bagikan melalui


Kelas CColorDialog

Memungkinkan Anda memasukkan kotak dialog pemilihan warna ke dalam aplikasi Anda.

Sintaks

class CColorDialog : public CCommonDialog

Anggota

Konstruktor Publik

Nama Deskripsi
CColorDialog::CColorDialog Membuat CColorDialog objek.

Metode Publik

Nama Deskripsi
CColorDialog::D oModal Menampilkan kotak dialog warna dan memungkinkan pengguna membuat pilihan.
CColorDialog::GetColor Mengembalikan struktur yang COLORREF berisi nilai warna yang dipilih.
CColorDialog::GetSavedCustomColors Mengambil warna kustom yang dibuat oleh pengguna.
CColorDialog::SetCurrentColor Memaksa pilihan warna saat ini ke warna yang ditentukan.

Metode yang Dilindungi

Nama Deskripsi
CColorDialog::OnColorOK Ambil alih untuk memvalidasi warna yang dimasukkan ke dalam kotak dialog.

Anggota Data Publik

Nama Deskripsi
CColorDialog::m_cc Struktur yang digunakan untuk mengkustomisasi pengaturan kotak dialog.

Keterangan

Objek CColorDialog adalah kotak dialog dengan daftar warna yang ditentukan untuk sistem tampilan. Pengguna dapat memilih atau membuat warna tertentu dari daftar, yang kemudian dilaporkan kembali ke aplikasi saat kotak dialog keluar.

Untuk membuat CColorDialog objek, gunakan konstruktor yang disediakan atau dapatkan kelas baru dan gunakan konstruktor kustom Anda sendiri.

Setelah kotak dialog dibuat, Anda dapat mengatur atau mengubah nilai apa pun dalam struktur m_cc untuk menginisialisasi nilai kontrol kotak dialog. Struktur m_cc berjenis CHOOSECOLOR.

Setelah menginisialisasi kontrol kotak dialog, panggil DoModal fungsi anggota untuk menampilkan kotak dialog dan izinkan pengguna untuk memilih warna. DoModal mengembalikan pilihan pengguna dari tombol OK (IDOK) atau Batal (IDCANCEL) kotak dialog.

Jika DoModal mengembalikan IDOK, Anda dapat menggunakan salah CColorDialogsatu fungsi anggota untuk mengambil input informasi oleh pengguna.

Anda dapat menggunakan fungsi Windows CommDlgExtendedError untuk menentukan apakah terjadi kesalahan selama inisialisasi kotak dialog dan untuk mempelajari selengkapnya tentang kesalahan tersebut.

CColorDialog bergantung pada file COMMDLG.DLL yang dikirim dengan Windows versi 3.1 dan yang lebih baru.

Untuk mengkustomisasi kotak dialog, dapatkan kelas dari CColorDialog, sediakan templat dialog kustom, dan tambahkan peta pesan untuk memproses pesan pemberitahuan dari kontrol yang diperluas. Setiap pesan yang tidak diolah harus diteruskan ke kelas dasar.

Menyesuaikan fungsi kait tidak diperlukan.

Catatan

Pada beberapa instalasi CColorDialog objek tidak akan ditampilkan dengan latar belakang abu-abu jika Anda telah menggunakan kerangka kerja untuk membuat objek lain CDialog berwarna abu-abu.

Untuk informasi selengkapnya tentang menggunakan CColorDialog, lihat Kelas Dialog Umum

Hierarki Warisan

CObject

CCmdTarget

CWnd

CDialog

CCommonDialog

CColorDialog

Persyaratan

Header: afxdlgs.h

CColorDialog::CColorDialog

Membuat CColorDialog objek.

CColorDialog(
    COLORREF clrInit = 0,
    DWORD dwFlags = 0,
    CWnd* pParentWnd = NULL);

Parameter

clrInit
Pilihan warna default. Jika tidak ada nilai yang ditentukan, defaultnya adalah RGB(0,0,0) (hitam).

dwFlags
Sekumpulan bendera yang mengkustomisasi fungsi dan tampilan kotak dialog. Untuk informasi selengkapnya, lihat struktur CHOOSECOLOR di Windows SDK.

pParentWnd
Penunjuk ke jendela induk atau pemilik kotak dialog.

Contoh

// Show the Color dialog with all the default settings.
CColorDialog dlg1;
dlg1.DoModal();

// Show the fully opened Color dialog with red as the selected color.
CColorDialog dlg2(RGB(255, 0, 0), CC_FULLOPEN);
dlg2.DoModal();

CColorDialog::D oModal

Panggil fungsi ini untuk menampilkan kotak dialog warna umum Windows dan perbolehkan pengguna memilih warna.

virtual INT_PTR DoModal();

Tampilkan Nilai

IDOK atau IDCANCEL. Jika IDCANCEL dikembalikan, panggil fungsi Windows CommDlgExtendedError untuk menentukan apakah terjadi kesalahan.

IDOK dan IDCANCEL adalah konstanta yang menunjukkan apakah pengguna memilih tombol OK atau Batal.

Keterangan

Jika Anda ingin menginisialisasi berbagai opsi kotak dialog warna dengan mengatur anggota struktur m_cc , Anda harus melakukan ini sebelum memanggil DoModal tetapi setelah objek kotak dialog dibangun.

Setelah memanggil DoModal, Anda dapat memanggil fungsi anggota lain untuk mengambil pengaturan atau input informasi oleh pengguna ke dalam kotak dialog.

Contoh

Lihat contoh untuk CColorDialog::CColorDialog.

CColorDialog::GetColor

Panggil fungsi ini setelah memanggil DoModal untuk mengambil informasi tentang warna yang dipilih pengguna.

COLORREF GetColor() const;

Tampilkan Nilai

Nilai COLORREF yang berisi informasi RGB untuk warna yang dipilih dalam kotak dialog warna.

Contoh

// Get the selected color from the CColorDialog.
CColorDialog dlg;
if (dlg.DoModal() == IDOK)
{
   COLORREF color = dlg.GetColor();
   TRACE(_T("RGB value of the selected color - red = %u, ")
         _T("green = %u, blue = %u\n"),
         GetRValue(color), GetGValue(color), GetBValue(color));
}

CColorDialog::GetSavedCustomColors

CColorDialog objek mengizinkan pengguna, selain memilih warna, untuk menentukan hingga 16 warna kustom.

static COLORREF* PASCAL GetSavedCustomColors();

Tampilkan Nilai

Penunjuk ke array nilai warna 16 RGB yang menyimpan warna kustom yang dibuat oleh pengguna.

Keterangan

Fungsi GetSavedCustomColors anggota menyediakan akses ke warna-warna ini. Warna-warna ini dapat diambil setelah DoModal mengembalikan IDOK.

Masing-masing dari 16 nilai RGB dalam array yang dikembalikan diinisialisasi ke RGB(255.255.255) (putih). Warna kustom yang dipilih oleh pengguna hanya disimpan di antara pemanggilan kotak dialog dalam aplikasi. Jika Anda ingin menyimpan warna-warna ini di antara pemanggilan aplikasi, Anda harus menyimpannya dengan cara lain, seperti dalam inisialisasi (. INI) file.

Contoh

// Get a pointer to an array of 16 RGB color values that stores
// custom colors created by the user from CColorDialog.
CColorDialog dlg;
if (dlg.DoModal() == IDOK)
{
   COLORREF *ccolor = dlg.GetSavedCustomColors();
   for (int i = 0; i < 16; i++)
   {
      TRACE(_T("RGB value of the selected color - red = %u, ")
            _T("green = %u, blue = %u\n"),
            GetRValue(ccolor[i]),
            GetGValue(ccolor[i]),
            GetBValue(ccolor[i]));
   }
}

CColorDialog::m_cc

Struktur jenis CHOOSECOLOR, yang anggotanya menyimpan karakteristik dan nilai kotak dialog.

CHOOSECOLOR m_cc;

Keterangan

Setelah membuat CColorDialog objek, Anda dapat menggunakan m_cc untuk mengatur berbagai aspek kotak dialog sebelum memanggil fungsi anggota DoModal .

Contoh

// The code below uses CColorDialog::m_cc data member to
// customize the settings of CColorDialog. The CColorDialog will
// be shown as full open and with red as the selected color.
CColorDialog dlg;
dlg.m_cc.Flags |= CC_FULLOPEN | CC_RGBINIT;
dlg.m_cc.rgbResult = RGB(255, 0, 0);
dlg.DoModal();

CColorDialog::OnColorOK

Ambil alih untuk memvalidasi warna yang dimasukkan ke dalam kotak dialog.

virtual BOOL OnColorOK();

Tampilkan Nilai

Bukan nol jika kotak dialog tidak boleh dihentikan; jika tidak, 0 untuk menerima warna yang dimasukkan.

Keterangan

Ambil alih fungsi ini hanya jika Anda ingin memberikan validasi kustom warna yang dipilih pengguna dalam kotak dialog warna.

Pengguna dapat memilih warna dengan salah satu dari dua metode berikut:

  • Mengklik warna pada palet warna. Nilai RGB warna yang dipilih kemudian tercermin dalam kotak edit RGB yang sesuai.

  • Memasukkan nilai dalam kotak edit RGB

Penimpaan OnColorOK memungkinkan Anda menolak warna yang dimasukkan pengguna ke dalam kotak dialog warna umum karena alasan khusus aplikasi apa pun.

Biasanya, Anda tidak perlu menggunakan fungsi ini karena kerangka kerja menyediakan validasi warna default dan menampilkan kotak pesan jika warna yang tidak valid dimasukkan.

Anda dapat memanggil SetCurrentColor dari dalam OnColorOK untuk memaksa pilihan warna. Setelah OnColorOK diaktifkan (yaitu, pengguna mengklik OK untuk menerima perubahan warna), Anda dapat memanggil GetColor untuk mendapatkan nilai RGB dari warna baru.

Contoh

// Override OnColorOK to validate the color entered to the
// Red, Green, and Blue edit controls. If the color
// is BLACK (i.e. RGB(0, 0,0)), then force the current color
// selection to be the color initially selected when the
// dialog box is created. The color dialog won't close so
// user can enter a new color.
BOOL CMyColorDlg::OnColorOK()
{
   // Value in Red edit control.
   COLORREF clrref = GetColor();
   if (RGB(0, 0, 0) == clrref)
   {
      AfxMessageBox(_T("BLACK is not an acceptable color. ")
                    _T("Please enter a color again"));

      // GetColor() returns initially selected color.
      SetCurrentColor(GetColor());

      // Won't dismiss color dialog.
      return TRUE;
   }

   // OK to dismiss color dialog.
   return FALSE;
}

CColorDialog::SetCurrentColor

Panggil fungsi ini setelah memanggil DoModal untuk memaksa pemilihan warna saat ini ke nilai warna yang ditentukan dalam clr.

void SetCurrentColor(COLORREF clr);

Parameter

Clr
Nilai warna RGB.

Keterangan

Fungsi ini dipanggil dari dalam handler pesan atau OnColorOK. Kotak dialog akan secara otomatis memperbarui pilihan pengguna berdasarkan nilai parameter clr .

Contoh

Lihat contoh untuk CColorDialog::OnColorOK.

Lihat juga

MFC Sampel MDI
SAMPEL MFC DRAWCLI
Kelas CCommonDialog
Bagan Hierarki