Sdílet prostřednictvím


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

Jméno popis
CMFCColorMenuButton::CMFCColorMenuButton CMFCColorMenuButton Vytvoří objekt.

Veřejné metody

Jméno 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

Jméno 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

Objekt CObject

CMFCToolBarButton

CMFCToolBarMenuButton

CMFCColorMenuButton

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

Vrácená 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();

Vrácená 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;

Vrácená 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;

Vrácená 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.

Vrácená 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;

Vrácená 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.

Vrácená 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.

Vrácená 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.

Barev
[v] Hodnota barvy RGB.

CMFCColorMenuButton::SetColorName

Nastaví nový název pro zadanou barvu.

static void SetColorName(
    COLORREF color,
    const CString& strName);

Parametry

Barev
[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