Udostępnij za pośrednictwem


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 CColorDialogfunkcji 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 CColorDialogklasy , 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

Obiekt CObject

CCmdTarget

CWnd

CDialog

CCommonDialog

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 DoModalmetody 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