Sdílet prostřednictvím


CColorDialog – třída

Umožňuje začlenit do aplikace dialogové okno pro výběr barev.

Syntaxe

class CColorDialog : public CCommonDialog

Členové

Veřejné konstruktory

Název Popis
CColorDialog::CColorDialog CColorDialog Vytvoří objekt.

Veřejné metody

Název Popis
CColorDialog::D oModal Zobrazí dialogové okno barvy a umožní uživateli provést výběr.
CColorDialog::GetColor COLORREF Vrátí strukturu obsahující hodnoty vybrané barvy.
CColorDialog::GetSavedCustomColors Načte vlastní barvy vytvořené uživatelem.
CColorDialog::SetCurrentColor Vynutí aktuální výběr barvy na zadanou barvu.

Chráněné metody

Název Popis
CColorDialog::OnColorOK Přepsání ověřte barvu zadaná do dialogového okna.

Veřejné datové členy

Název Popis
CColorDialog::m_cc Struktura použitá k přizpůsobení nastavení dialogového okna.

Poznámky

Objekt CColorDialog je dialogové okno se seznamem barev definovaných pro systém zobrazení. Uživatel může ze seznamu vybrat nebo vytvořit určitou barvu, která se pak při ukončení dialogového okna zobrazí zpět do aplikace.

Chcete-li vytvořit CColorDialog objekt, použijte zadaný konstruktor nebo odvození nové třídy a použijte vlastní konstruktor.

Po vytvoření dialogového okna můžete nastavit nebo upravit jakékoli hodnoty ve struktuře m_cc tak, aby inicializovaly hodnoty ovládacích prvků dialogového okna. Struktura m_cc je typu CHOOSECOLOR.

Po inicializaci ovládacích prvků dialogového okna zavolejte DoModal členskou funkci, aby zobrazila dialogové okno a povolila uživateli vybrat barvu. DoModal vrátí výběr uživatele tlačítka OK (IDOK) dialogového okna nebo zrušit (IDCANCEL).

Pokud DoModal vrátí idOK, můžete k načtení informací zadaných uživatelem použít některou z CColorDialogčlenských funkcí.

Pomocí funkce CommDlgExtendedError systému Windows můžete určit, jestli během inicializace dialogového okna došlo k chybě, a získat další informace o chybě.

CColorDialog spoléhá na COMMDLG.DLL soubor, který je dodáván s Windows verze 3.1 a novější.

Chcete-li přizpůsobit dialogové okno, odvodit třídu z CColorDialog, poskytnout vlastní šablonu dialogového okna a přidat mapu zpráv pro zpracování zpráv z rozšířených ovládacích prvků. Všechny nezpracované zprávy by měly být předány do základní třídy.

Přizpůsobení funkce háku se nevyžaduje.

Poznámka:

V některých instalacích CColorDialog se objekt nezobrazí se šedým pozadím, pokud jste použili architekturu k tomu, aby ostatní CDialog objekty byly šedé.

Další informace o použití CColorDialognaleznete v tématu Běžné třídy dialogových oken

Hierarchie dědičnosti

Objekt CObject

CCmdTarget

CWnd

CDialog

CCommonDialog

CColorDialog

Požadavky

Hlavička: afxdlgs.h

CColorDialog::CColorDialog

CColorDialog Vytvoří objekt.

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

Parametry

clrInit
Výchozí výběr barvy. Pokud není zadána žádná hodnota, výchozí hodnota je RGB(0,0;0) (černá).

dwFlags
Sada příznaků, které přizpůsobují funkci a vzhled dialogového okna. Další informace naleznete ve struktuře CHOOSECOLOR v sadě Windows SDK.

pParentWnd
Ukazatel na nadřazené okno nebo okno vlastníka dialogového okna

Příklad

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

Voláním této funkce zobrazíte dialogové okno Společné barvy Systému Windows a umožníte uživateli vybrat barvu.

virtual INT_PTR DoModal();

Návratová hodnota

IDOK nebo IDCANCEL. Pokud je vrácena funkce IDCANCEL, zavolejte funkci CommDlgExtendedError systému Windows, abyste zjistili, zda došlo k chybě.

IDOK a IDCANCEL jsou konstanty, které označují, zda uživatel vybral tlačítko OK nebo Zrušit.

Poznámky

Pokud chcete inicializovat různé možnosti barevného dialogového okna nastavením členů struktury m_cc , měli byste to udělat před voláním DoModal , ale po vytvoření objektu dialogového okna.

Po volání můžete zavolat DoModaldalší členské funkce, které načtou nastavení nebo informace zadané uživatelem do dialogového okna.

Příklad

Podívejte se na příklad pro CColorDialog::CColorDialog.

CColorDialog::GetColor

Voláním této funkce načtěte DoModal informace o barvě vybraném uživatelem.

COLORREF GetColor() const;

Návratová hodnota

Hodnota COLORREF, která obsahuje informace RGB pro barvu vybranou v dialogovém okně barva.

Příklad

// 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 objekty umožňují uživateli kromě výběru barev definovat až 16 vlastních barev.

static COLORREF* PASCAL GetSavedCustomColors();

Návratová hodnota

Ukazatel na pole 16 barevných hodnot RGB, které ukládají vlastní barvy vytvořené uživatelem.

Poznámky

Členová GetSavedCustomColors funkce poskytuje přístup k těmto barvám. Tyto barvy lze načíst po vrácení idOK doModal .

Každá z 16 hodnot RGB ve vrácené matici se inicializuje na RGB(255 255 255) (bílá). Vlastní barvy vybrané uživatelem se ukládají pouze mezi vyvoláním dialogového okna v aplikaci. Pokud chcete tyto barvy uložit mezi vyvoláním aplikace, musíte je uložit jiným způsobem, například inicializací (). INI) soubor.

Příklad

// 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, jejíž členové ukládají vlastnosti a hodnoty dialogového okna.

CHOOSECOLOR m_cc;

Poznámky

Po vytvoření objektu CColorDialog můžete pomocí m_cc nastavit různé aspekty dialogového okna před voláním členské funkce DoModal .

Příklad

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

Přepsání ověřte barvu zadaná do dialogového okna.

virtual BOOL OnColorOK();

Návratová hodnota

Nenulové, pokud by dialogové okno nemělo být zamítnuto; jinak 0 přijměte zadaná barva.

Poznámky

Tuto funkci přepište pouze v případě, že chcete zadat vlastní ověření barvy, kterou uživatel vybere v dialogovém okně barev.

Uživatel může vybrat barvu pomocí jedné z následujících dvou metod:

  • Klikněte na barvu na paletě barev. Hodnoty RGB vybrané barvy se pak projeví v příslušných polích pro úpravy RGB.

  • Zadávání hodnot do polí pro úpravy RGB

Přepsání OnColorOK umožňuje odmítnout barvu, kterou uživatel zadá do běžného barevného dialogového okna z jakéhokoli důvodu specifického pro aplikaci.

Za normálních okolností tuto funkci nemusíte používat, protože architektura poskytuje výchozí ověřování barev a zobrazí okno se zprávou, pokud je zadána neplatná barva.

Můžete volat SetCurrentColor z uvnitř OnColorOK vynutit výběr barvy. Jakmile OnColorOK se aktivuje (to znamená, že uživatel klikne na OK a přijme změnu barvy), můžete volat GetColor a získat hodnotu RGB nové barvy.

Příklad

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

Voláním této funkce vynutíte DoModal aktuální výběr barvy na hodnotu barvy zadanou v clr.

void SetCurrentColor(COLORREF clr);

Parametry

clr
Hodnota barvy RGB.

Poznámky

Tato funkce je volána z obslužné rutiny zprávy nebo OnColorOK. Dialogové okno automaticky aktualizuje výběr uživatele na základě hodnoty parametru clr .

Příklad

Podívejte se na příklad pro CColorDialog::OnColorOK.

Viz také

MFC – ukázka MDI
MFC – ukázka DRAWCLI
CCommonDialog – třída
Graf hierarchie