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í CColorDialog
naleznete v tématu Běžné třídy dialogových oken
Hierarchie dědičnosti
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 DoModal
další č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