CMFCColorMenuButton – třída
Třída CMFCColorMenuButton
podporuje příkaz nabídky nebo tlačítko panelu nástrojů, které spustí dialogové okno pro výběr barvy.
Syntaxe
class CMFCColorMenuButton : public CMFCToolBarMenuButton
Členové
Veřejné konstruktory
Název | Popis |
---|---|
CMFCColorMenuButton::CMFCColorMenuButton | CMFCColorMenuButton Vytvoří objekt. |
Veřejné metody
Název | Popis |
---|---|
CMFCColorMenuButton::EnableAutomaticButton | Povolí a zakáže "automatické" tlačítko umístěné nad běžnými barevnými tlačítky. (Standardní automatické tlačítko systému je označené Automaticky.) |
CMFCColorMenuButton::EnableDocumentColors | Povolí zobrazení barev specifických pro dokument místo systémových barev. |
CMFCColorMenuButton::EnableOtherButton | Povolí a zakáže tlačítko "jiné", které je umístěné pod běžnými tlačítky barev. (Standardní systém "jiné" tlačítko je označeno Další barvy.) |
CMFCColorMenuButton::EnableTearOff | Umožňuje vypnout barevné podokno. |
CMFCColorMenuButton::GetAutomaticColor | Načte aktuální automatickou barvu. |
CMFCColorMenuButton::GetColor | Načte barvu aktuálního tlačítka. |
CMFCColorMenuButton::GetColorByCmdID | Načte barvu odpovídající zadanému ID příkazu. |
CMFCColorMenuButton::OnChangeParentWnd | Volá se rozhraním při změně nadřazeného okna. |
CMFCColorMenuButton::OpenColorDialog | Otevře dialogové okno pro výběr barvy. |
CMFCColorMenuButton::SetColor | Nastaví barvu aktuálního tlačítka barvy. |
CMFCColorMenuButton::SetColorByCmdID | Nastaví barvu zadaného tlačítka nabídky barev. |
CMFCColorMenuButton::SetColorName | Nastaví nový název pro zadanou barvu. |
CMFCColorMenuButton::SetColumnsNumber | Nastaví počet sloupců, které jsou zobrazeny objektem CMFCColorBar . |
Chráněné metody
Název | Popis |
---|---|
CMFCColorMenuButton::CopyFrom | Zkopíruje další tlačítko panelu nástrojů na aktuální tlačítko. |
CMFCColorMenuButton::CreatePopupMenu | Vytvoří dialogové okno pro výběr barvy. |
CMFCColorMenuButton::IsEmptyMenuAllowed | Určuje, zda jsou podporovány prázdné nabídky. |
CMFCColorMenuButton::OnDraw | Volá se rozhraním pro zobrazení obrázku na tlačítku. |
CMFCColorMenuButton::OnDrawOnCustomizeList | Volá se rozhraním před zobrazením CMFCColorMenuButton objektu v seznamu dialogového okna přizpůsobení panelu nástrojů. |
Poznámky
Chcete-li nahradit původní příkaz nabídky nebo tlačítko panelu nástrojů objektu CMFCColorMenuButton
, vytvořte CMFCColorMenuButton
objekt, nastavte všechny odpovídající CMFCColorBar Třídy styly a potom zavolejte ReplaceButton
metodu CMFCToolBar Třída třída . Pokud přizpůsobíte panel nástrojů, zavolejte CMFCToolBarsCustomizeDialog::ReplaceButton metoda.
Dialogové okno pro výběr barvy se vytvoří během zpracování CMFCColorMenuButton::CreatePopupMenu obslužné rutiny události. Obslužná rutina události upozorní nadřazený rámec zprávou WM_COMMAND. Objekt CMFCColorMenuButton
odešle ID ovládacího prvku, které je přiřazeno k původnímu příkazu nabídky nebo tlačítku panelu nástrojů.
Příklad
Následující příklad ukazuje, jak vytvořit a nakonfigurovat tlačítko nabídky barev pomocí různých metod ve CMFCColorMenuButton
třídě. V příkladu CPalette
se nejprve vytvoří objekt a pak se použije k vytvoření objektu CMFCColorMenuButton
třídy. Objekt CMFCColorMenuButton
se pak nakonfiguruje povolením automatických a dalších tlačítek a nastavením jeho barvy a počtu sloupců. Tento kód je součástí ukázky wordové oblasti.
CPalette m_palColorPicker; // Palette for color picker
int m_nNumColours;
CMFCColorMenuButton *CFormatBar::CreateColorButton()
{
if (m_palColorPicker.GetSafeHandle() == NULL)
{
m_nNumColours = sizeof(crColours) / sizeof(ColourTableEntry);
ASSERT(m_nNumColours <= MAX_COLOURS);
if (m_nNumColours > MAX_COLOURS)
m_nNumColours = MAX_COLOURS;
// Create the palette
struct
{
LOGPALETTE LogPalette;
PALETTEENTRY PalEntry[MAX_COLOURS];
} pal;
LOGPALETTE *pLogPalette = (LOGPALETTE*)&pal;
pLogPalette->palVersion = 0x300;
pLogPalette->palNumEntries = (WORD)m_nNumColours;
for (int i = 0; i < m_nNumColours; i++)
{
pLogPalette->palPalEntry[i].peRed = GetRValue(crColours[i].crColour);
pLogPalette->palPalEntry[i].peGreen = GetGValue(crColours[i].crColour);
pLogPalette->palPalEntry[i].peBlue = GetBValue(crColours[i].crColour);
pLogPalette->palPalEntry[i].peFlags = 0;
}
m_palColorPicker.CreatePalette(pLogPalette);
}
CMFCColorMenuButton *pColorButton = new CMFCColorMenuButton(ID_CHAR_COLOR, _T("Text Color..."), &m_palColorPicker);
pColorButton->EnableAutomaticButton(_T("Automatic"), RGB(0, 0, 0));
pColorButton->EnableOtherButton(_T("More Colors..."));
pColorButton->EnableDocumentColors(_T("Document's Colors"));
pColorButton->EnableTearOff(ID_COLOR_TEAROFF, 5, 2);
pColorButton->SetColumnsNumber(8);
pColorButton->SetColor(RGB(0, 0, 255));
// Initialize color names:
for (int i = 0; i < m_nNumColours; i++)
{
CMFCColorMenuButton::SetColorName(crColours[i].crColour, crColours[i].szName);
}
return pColorButton;
}
Hierarchie dědičnosti
Požadavky
Záhlaví: afxcolormenubutton.h
CMFCColorMenuButton::CMFCColorMenuButton
CMFCColorMenuButton
Vytvoří objekt.
CMFCColorMenuButton();
CMFCColorMenuButton(
UINT uiCmdID,
LPCTSTR lpszText,
CPalette* pPalette=NULL);
Parametry
uiCmdID
[v] ID příkazu tlačítka.
lpszText
[v] Text tlačítka.
pPalette
[v] Ukazatel na paletu barev tlačítka
Návratová hodnota
Poznámky
První konstruktor je výchozí konstruktor. Aktuální barva objektu a automatická barva se inicializují na černou (RGB(0, 0, 0)).
Druhý konstruktor inicializuje tlačítko na barvu, která odpovídá zadanéMU ID příkazu.
CMFCColorMenuButton::CopyFrom
Zkopíruje jeden CMFCToolBarMenuButton – odvozený objekt do jiného.
virtual void CopyFrom(const CMFCToolBarButton& src);
Parametry
Src
[v] Tlačítko Zdroj, které chcete zkopírovat.
Poznámky
Přepište tuto metodu pro kopírování objektů odvozených z objektu CMFCColorMenuButton
.
CMFCColorMenuButton::CreatePopupMenu
Vytvoří dialogové okno pro výběr barvy.
virtual CMFCPopupMenu* CreatePopupMenu();
Návratová hodnota
Objekt, který představuje dialogové okno pro výběr barvy.
Poznámky
Tato metoda je volána rozhraním, když uživatel stiskne tlačítko barevné nabídky.
CMFCColorMenuButton::EnableAutomaticButton
Povolí a zakáže "automatické" tlačítko umístěné nad běžnými barevnými tlačítky. (Standardní automatické tlačítko systému je označené Automaticky.)
void EnableAutomaticButton(
LPCTSTR lpszLabel,
COLORREF colorAutomatic,
BOOL bEnable=TRUE);
Parametry
lpszLabel
[v] Určuje text tlačítka, který se zobrazí, když se tlačítko změní na automatické.
colorAutomatic
[v] Určuje novou automatickou barvu.
bEnable
[v] Určuje, jestli je tlačítko automatické nebo ne.
Poznámky
Automatické tlačítko použije aktuální výchozí barvu.
CMFCColorMenuButton::EnableDocumentColors
Povolí zobrazení barev specifických pro dokument místo systémových barev.
void EnableDocumentColors(
LPCTSTR lpszLabel,
BOOL bEnable=TRUE);
Parametry
lpszLabel
[v] Určuje text tlačítka.
bEnable
[v] TRUE pro zobrazení barev specifických pro dokument nebo NEPRAVDA pro zobrazení systémových barev.
Poznámky
Tato metoda slouží k zobrazení aktuálních barev dokumentu nebo barev systémové palety, když uživatel klikne na tlačítko nabídky barev.
CMFCColorMenuButton::EnableOtherButton
Povolí a zakáže tlačítko "jiné", které je umístěné pod běžnými tlačítky barev. (Standardní systém "jiné" tlačítko je označeno Další barvy.)
void EnableOtherButton(
LPCTSTR lpszLabel,
BOOL bAltColorDlg=TRUE,
BOOL bEnable=TRUE);
Parametry
lpszLabel
[v] Určuje text tlačítka.
bAltColorDlg
[v] Chcete-li zobrazit standardní systémovou barvu dialogového CMFCColorDialog
okna, zadejte hodnotu TRUE.
bEnable
[v] Zadejte hodnotu TRUE, aby se zobrazilo tlačítko "ostatní"; jinak NEPRAVDA. Výchozí hodnota je PRAVDA.
Poznámky
CMFCColorMenuButton::EnableTearOff
Umožňuje vypnout barevné podokno.
void EnableTearOff(
UINT uiID,
int nVertDockColumns=-1,
int nHorzDockRows=-1);
Parametry
UIID
[v] Určuje ID pro podokno odtržování.
nVertDockColumns
[v] Určuje počet sloupců ve svislém ukotveném barevném podokně v době, kdy je stav odtržený.
nHorzDockRows
[v] Určuje počet řádků vodorovně ukotveného barevného podokna v odtrženém stavu.
Poznámky
Voláním této metody povolíte funkci "odtrhání" pro barevné podokno, které se zobrazí při CMFCColorMenuButton
stisknutí tlačítka.
CMFCColorMenuButton::GetAutomaticColor
Načte aktuální automatickou barvu.
COLORREF GetAutomaticColor() const;
Návratová hodnota
Hodnota barvy RGB, která představuje aktuální automatickou barvu.
Poznámky
Voláním této metody získáte automatickou barvu nastavenou CMFCColorMenuButton::EnableAutomaticButton.
CMFCColorMenuButton::GetColor
Načte barvu aktuálního tlačítka.
COLORREF GetColor() const;
Návratová hodnota
Barva tlačítka.
Poznámky
CMFCColorMenuButton::GetColorByCmdID
Načte barvu odpovídající zadanému ID příkazu.
static COLORREF GetColorByCmdID(UINT uiCmdID);
Parametry
uiCmdID
[v] ID příkazu.
Návratová hodnota
Barva odpovídající zadanému ID příkazu.
Poznámky
Tuto metodu použijte, pokud máte v aplikaci několik barevných tlačítek. Když uživatel klikne na barevné tlačítko, tlačítko odešle jeho ID příkazu do WM_COMMAND zprávy nadřazené. Metoda GetColorByCmdID
používá ID příkazu k načtení odpovídající barvy.
CMFCColorMenuButton::IsEmptyMenuAllowed
Určuje, zda jsou podporovány prázdné nabídky.
virtual BOOL IsEmptyMenuAllowed() const;
Návratová hodnota
Nenulové, pokud jsou povoleny prázdné nabídky; jinak, nula.
Poznámky
Prázdné nabídky jsou ve výchozím nastavení podporované. Přepsat tuto metodu změnit toto chování v odvozené třídě.
CMFCColorMenuButton::OnChangeParentWnd
Volá se rozhraním při změně nadřazeného okna.
virtual void OnChangeParentWnd(CWnd* pWndParent);
Parametry
pWndParent
[v] Ukazatel na nové nadřazené okno.
Poznámky
CMFCColorMenuButton::OnDraw
Volá se rozhraním pro zobrazení obrázku na tlačítku.
virtual void OnDraw(
CDC* pDC,
const CRect& rect,
CMFCToolBarImages* pImages,
BOOL bHorz=TRUE,
BOOL bCustomizeMode=FALSE,
BOOL bHighlight=FALSE,
BOOL bDrawBorder=TRUE,
BOOL bGrayDisabledButtons=TRUE);
Parametry
pDC
[v] Ukazatel na kontext zařízení.
Rect
[v] Obdélník, který ohraničuje oblast, která má být překreslena.
pImages
[v] Odkazuje na seznam obrázků na panelu nástrojů.
bHorz
[v] TRUE určit, že panel nástrojů je ve vodorovném ukotveném stavu; jinak NEPRAVDA. Výchozí hodnota je PRAVDA.
bCustomizeMode
[v] TRUE určit, že aplikace je v režimu přizpůsobení; jinak NEPRAVDA. Výchozí hodnota je NEPRAVDA.
bHighlight
[v] HODNOTA TRUE určuje, že tlačítko je zvýrazněno; jinak NEPRAVDA. Výchozí hodnota je NEPRAVDA.
bDrawBorder
[v] PRAVDA, pokud chcete určit, že je zobrazeno ohraničení tlačítka; jinak NEPRAVDA. Výchozí hodnota je PRAVDA.
bGrayDisabledButtons
[v] PRAVDA, pokud chcete určit, že zakázaná tlačítka jsou neaktivní (šedě) vypnutá; jinak NEPRAVDA. Výchozí hodnota je PRAVDA.
Poznámky
CMFCColorMenuButton::OnDrawOnCustomizeList
Volá se rozhraním před zobrazením CMFCColorMenuButton
objektu v seznamu dialogového okna přizpůsobení panelu nástrojů.
virtual int OnDrawOnCustomizeList(
CDC* pDC,
const CRect& rect,
BOOL bSelected);
Parametry
pDC
[v] Ukazatel na kontext zařízení.
Rect
[v] Obdélník, který ohraničuje tlačítko, které se má nakreslit.
bSelected
[v] PRAVDA určuje, že tlačítko je ve vybraném stavu; jinak NEPRAVDA.
Návratová hodnota
Šířka tlačítka.
Poznámky
Tato metoda je volána rozhraním při CMFCColorMenuButton
zobrazení objektu v seznamu v seznamu během procesu přizpůsobení panelu nástrojů.
CMFCColorMenuButton::OpenColorDialog
Otevře dialogové okno pro výběr barvy.
virtual BOOL OpenColorDialog(
const COLORREF colorDefault,
COLORREF& colorRes);
Parametry
colorDefault
[v] Výchozí barva vybraná v dialogovém okně barva.
colorRes
[ven] Vrátí barvu, kterou uživatel vybere v dialogovém okně barva.
Návratová hodnota
Nenulové, pokud uživatel vybere novou barvu; jinak, nula.
Poznámky
Po kliknutí na tlačítko nabídky zavolejte tuto metodu a otevřete dialogové okno barvy. Pokud je návratová hodnota nenulová, barva, kterou uživatel vybere, je uložena v parametru colorRes . Pomocí CMFCColorMenuButton::EnableOtherButton metoda přepínat mezi standardním barevným dialogem a CMFCColorDialog Třídy dialogové okno.
CMFCColorMenuButton::SetColor
Nastaví barvu aktuálního tlačítka barvy.
virtual void SetColor(
COLORREF clr,
BOOL bNotify=TRUE);
Parametry
clr
[v] Hodnota barvy RGB.
bNotify
[v] TRUE, pokud chcete použít barvu parametru clr u jakéhokoli přidruženého tlačítka nabídky nebo tlačítka panelu nástrojů; jinak NEPRAVDA.
Poznámky
Voláním této metody změníte barvu aktuálního tlačítka barvy. Pokud je parametr bNotify nenulový, změní se barva odpovídajícího tlačítka v jakékoli přidružené místní nabídce nebo panelu nástrojů na barvu určenou parametrem clr.
CMFCColorMenuButton::SetColorByCmdID
Nastaví barvu zadaného tlačítka nabídky barev.
static void SetColorByCmdID(
UINT uiCmdID,
COLORREF color);
Parametry
uiCmdID
[v] ID prostředku tlačítka nabídky barev.
barva
[v] Hodnota barvy RGB.
CMFCColorMenuButton::SetColorName
Nastaví nový název pro zadanou barvu.
static void SetColorName(
COLORREF color,
const CString& strName);
Parametry
barva
[v] Hodnota RGB barvy, jejíž název se změní.
strName
[v] Nový název barvy.
Poznámky
CMFCColorMenuButton::SetColumnsNumber
Nastaví počet sloupců, které se mají zobrazit v ovládacím prvku pro výběr barev ( CMFCColorBar objekt).
void SetColumnsNumber(int nColumns);
Parametry
nSloupce
[v] Počet sloupců, které se mají zobrazit.
Poznámky
Viz také
Graf hierarchie
Třídy
CMFCColorBar – třída
CMFCToolBar – třída
CMFCToolBarsCustomizeDialog – třída
CMFCColorButton – třída