Klasa CColorDialog
Umożliwia dołączenie okna dialogowego wyboru kolorów do aplikacji.
Składnia
class CColorDialog : public CCommonDialog
Elementy członkowskie
Konstruktory publiczne
Nazwa/nazwisko | opis |
---|---|
CColorDialog::CColorDialog | CColorDialog Tworzy obiekt. |
Metody publiczne
Nazwa/nazwisko | opis |
---|---|
CColorDialog::D oModal | Wyświetla okno dialogowe koloru i umożliwia użytkownikowi dokonanie wyboru. |
CColorDialog::GetColor | COLORREF Zwraca strukturę zawierającą wartości wybranego koloru. |
CColorDialog::GetSavedCustomColors | Pobiera kolory niestandardowe utworzone przez użytkownika. |
CColorDialog::SetCurrentColor | Wymusza wybór bieżącego koloru do określonego koloru. |
Metody chronione
Nazwa/nazwisko | opis |
---|---|
CColorDialog::OnColorOK | Zastąpij, aby zweryfikować kolor wprowadzony w oknie dialogowym. |
Publiczne elementy członkowskie danych
Nazwa/nazwisko | opis |
---|---|
CColorDialog::m_cc | Struktura używana do dostosowywania ustawień okna dialogowego. |
Uwagi
CColorDialog
Obiekt to okno dialogowe z listą kolorów zdefiniowanych dla systemu wyświetlania. Użytkownik może wybrać lub utworzyć określony kolor z listy, który zostanie następnie zgłoszony z powrotem do aplikacji po zakończeniu okna dialogowego.
Aby utworzyć CColorDialog
obiekt, użyj dostarczonego konstruktora lub utwórz nową klasę i użyj własnego konstruktora niestandardowego.
Po utworzeniu okna dialogowego można ustawić lub zmodyfikować dowolne wartości w strukturze m_cc, aby zainicjować wartości kontrolek okna dialogowego. Struktura m_cc jest typu CHOOSECOLOR.
Po zainicjowaniu kontrolek okna dialogowego wywołaj DoModal
funkcję składową, aby wyświetlić okno dialogowe i zezwolić użytkownikowi na wybór koloru. DoModal
Zwraca wybór użytkownika przycisku OK (IDOK) lub Anuluj (IDCANCEL) okna dialogowego.
Jeśli DoModal
funkcja IDOK zwraca wartość IDOK, możesz użyć jednej z CColorDialog
funkcji członkowskich, aby pobrać informacje wejściowe przez użytkownika.
Możesz użyć funkcji Windows CommDlgExtendedError , aby określić, czy wystąpił błąd podczas inicjowania okna dialogowego i dowiedzieć się więcej o błędzie.
CColorDialog
korzysta z pliku COMMDLG.DLL dostarczanego z systemem Windows w wersji 3.1 lub nowszej.
Aby dostosować okno dialogowe, utwórz klasę z CColorDialog
klasy , podaj niestandardowy szablon okna dialogowego i dodaj mapę komunikatów w celu przetworzenia komunikatów powiadomień z rozszerzonych kontrolek. Wszystkie nieprzetworzone komunikaty powinny być przekazywane do klasy bazowej.
Dostosowywanie funkcji haka nie jest wymagane.
Uwaga
W niektórych instalacjach CColorDialog
obiekt nie będzie wyświetlany z szarym tłem, jeśli użyto platformy do utworzenia innych CDialog
obiektów w kolorze szarym.
Aby uzyskać więcej informacji na temat korzystania z programu CColorDialog
, zobacz Typowe klasy okien dialogowych
Hierarchia dziedziczenia
CColorDialog
Wymagania
Nagłówek: afxdlgs.h
CColorDialog::CColorDialog
CColorDialog
Tworzy obiekt.
CColorDialog(
COLORREF clrInit = 0,
DWORD dwFlags = 0,
CWnd* pParentWnd = NULL);
Parametry
clrInit
Domyślny wybór koloru. Jeśli nie określono żadnej wartości, wartość domyślna to RGB(0,0,0) ().
dwFlags
Zestaw flag, które dostosują funkcję i wygląd okna dialogowego. Aby uzyskać więcej informacji, zobacz strukturę CHOOSECOLOR w zestawie WINDOWS SDK.
pParentWnd
Wskaźnik do okna nadrzędnego lub okna właściciela okna dialogowego.
Przykład
// 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
Wywołaj tę funkcję, aby wyświetlić okno dialogowe Wspólnego koloru systemu Windows i zezwolić użytkownikowi na wybór koloru.
virtual INT_PTR DoModal();
Wartość zwracana
IDOK lub IDCANCEL. Jeśli element IDCANCEL jest zwracany, wywołaj funkcję Windows CommDlgExtendedError , aby ustalić, czy wystąpił błąd.
IDOK i IDCANCEL są stałymi, które wskazują, czy użytkownik wybrał przycisk OK, czy Anuluj.
Uwagi
Jeśli chcesz zainicjować różne opcje okna dialogowego kolorów, ustawiając elementy członkowskie struktury m_cc , należy to zrobić przed wywołaniem DoModal
metody , ale po utworzeniu obiektu okna dialogowego.
Po wywołaniu DoModal
metody można wywołać inne funkcje członkowskie, aby pobrać ustawienia lub informacje wejściowe przez użytkownika w oknie dialogowym.
Przykład
Zobacz przykład CColorDialog ::CColorDialog.
CColorDialog::GetColor
Wywołaj tę funkcję po wywołaniu metody DoModal
, aby pobrać informacje o kolorze wybranym przez użytkownika.
COLORREF GetColor() const;
Wartość zwracana
Wartość COLORREF zawierająca informacje RGB dla koloru wybranego w oknie dialogowym kolor.
Przykład
// 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
obiekty umożliwiają użytkownikowi, oprócz wybierania kolorów, definiowanie maksymalnie 16 kolorów niestandardowych.
static COLORREF* PASCAL GetSavedCustomColors();
Wartość zwracana
Wskaźnik do tablicy 16 wartości kolorów RGB, które przechowują niestandardowe kolory utworzone przez użytkownika.
Uwagi
Funkcja GetSavedCustomColors
składowa zapewnia dostęp do tych kolorów. Te kolory można pobrać po zwracaniu elementu IDOK przez funkcję DoModal .
Każda z 16 wartości RGB w zwróconej tablicy jest inicjowana do RGB(255,255,255) (biały). Kolory niestandardowe wybrane przez użytkownika są zapisywane tylko między wywołaniami okna dialogowego w aplikacji. Jeśli chcesz zapisać te kolory między wywołaniami aplikacji, musisz zapisać je w inny sposób, na przykład w inicjalizacji (. Plik INI).
Przykład
// 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
Struktura typu CHOOSECOLOR, której składowe przechowują cechy i wartości okna dialogowego.
CHOOSECOLOR m_cc;
Uwagi
Po utworzeniu CColorDialog
obiektu można użyć m_cc , aby ustawić różne aspekty okna dialogowego przed wywołaniem funkcji składowej DoModal .
Przykład
// 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
Zastąpij, aby zweryfikować kolor wprowadzony w oknie dialogowym.
virtual BOOL OnColorOK();
Wartość zwracana
Niezero, jeśli okno dialogowe nie powinno zostać odrzucone; w przeciwnym razie 0, aby zaakceptować wprowadzony kolor.
Uwagi
Zastąpij tę funkcję tylko wtedy, gdy chcesz zapewnić niestandardową walidację koloru wybieranego przez użytkownika w oknie dialogowym kolorów.
Użytkownik może wybrać kolor według jednej z następujących dwóch metod:
Kliknięcie koloru na palecie kolorów. Wartości RGB wybranego koloru są następnie odzwierciedlane w odpowiednich polach edycji RGB.
Wprowadzanie wartości w polach edycji RGB
Zastępowanie OnColorOK
umożliwia odrzucenie koloru wprowadzanego przez użytkownika do wspólnego okna dialogowego z dowolnego powodu specyficznego dla aplikacji.
Zwykle nie trzeba używać tej funkcji, ponieważ platforma zapewnia domyślną walidację kolorów i wyświetla pole komunikatu, jeśli wprowadzono nieprawidłowy kolor.
Możesz wywołać metodę SetCurrentColor z wewnątrz OnColorOK
, aby wymusić wybór koloru. Po OnColorOK
wyzwoleniu (czyli użytkownik klika przycisk OK , aby zaakceptować zmianę koloru), możesz wywołać metodę GetColor , aby uzyskać wartość RGB nowego koloru.
Przykład
// 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
Wywołaj tę funkcję po wywołaniu metody DoModal
, aby wymusić zaznaczenie bieżącego koloru na wartość koloru określoną w clr.
void SetCurrentColor(COLORREF clr);
Parametry
Clr
Wartość koloru RGB.
Uwagi
Ta funkcja jest wywoływana z programu obsługi komunikatów lub OnColorOK
. Okno dialogowe spowoduje automatyczne zaktualizowanie wyboru użytkownika na podstawie wartości parametru clr .
Przykład
Zobacz przykład CColorDialog ::OnColorOK.
Zobacz też
Przykładowe mdI MFC
Przykład MFC DRAWCLI
Klasa CCommonDialog
Wykres hierarchii