Freigeben über


CMFCColorMenuButton-Klasse

Die CMFCColorMenuButton Klasse unterstützt einen Menübefehl oder eine Symbolleistenschaltfläche, die ein Dialogfeld für die Farbauswahl startet.

Syntax

class CMFCColorMenuButton : public CMFCToolBarMenuButton

Member

Öffentliche Konstruktoren

Name Beschreibung
CMFCColorMenuButton::CMFCColorMenuButton Erstellt ein CMFCColorMenuButton-Objekt.

Öffentliche Methoden

Name Beschreibung
CMFCColorMenuButton::EnableAutomaticButton Aktiviert und deaktiviert eine "automatische" Schaltfläche, die über den regulären Farbschaltflächen positioniert ist. (Die automatische Standardschaltfläche des Systems ist beschriftet. Automatisch.)
CMFCColorMenuButton::EnableDocumentColors Aktiviert die Anzeige dokumentspezifischer Farben anstelle von Systemfarben.
CMFCColorMenuButton::EnableOtherButton Aktiviert und deaktiviert eine "andere" Schaltfläche, die unter den regulären Farbschaltflächen positioniert ist. (Die Standardsystemschaltfläche "sonstige" ist mit der Bezeichnung versehen. Weitere Farben.)
CMFCColorMenuButton::EnableTearOff Ermöglicht das Abreißen eines Farbbereichs.
CMFCColorMenuButton::GetAutomaticColor Ruft die aktuelle automatische Farbe ab.
CMFCColorMenuButton::GetColor Ruft die Farbe der aktuellen Schaltfläche ab.
CMFCColorMenuButton::GetColorByCmdID Ruft die Farbe ab, die einer angegebenen Befehls-ID entspricht.
CMFCColorMenuButton::OnChangeParentWnd Wird vom Framework aufgerufen, wenn sich das übergeordnete Fenster ändert.
CMFCColorMenuButton::OpenColorDialog Öffnet ein Dialogfeld für die Farbauswahl.
CMFCColorMenuButton::SetColor Legt die Farbe der aktuellen Farbschaltfläche fest.
CMFCColorMenuButton::SetColorByCmdID Legt die Farbe der angegebenen Menüschaltfläche für Farben fest.
CMFCColorMenuButton::SetColorName Legt einen neuen Namen für die angegebene Farbe fest.
CMFCColorMenuButton::SetColumnsNumber Legt die Anzahl der Spalten fest, die von einem CMFCColorBar Objekt angezeigt werden.

Geschützte Methoden

Name Beschreibung
CMFCColorMenuButton::CopyFrom Kopiert eine weitere Symbolleistenschaltfläche auf die aktuelle Schaltfläche.
CMFCColorMenuButton::CreatePopupMenuMenu Erstellt ein Dialogfeld für die Farbauswahl.
CMFCColorMenuButton::IsEmptyMenuAllowed Gibt an, ob leere Menüs unterstützt werden.
CMFCColorMenuButton::OnDraw Vom Framework aufgerufen, um ein Bild auf einer Schaltfläche anzuzeigen.
CMFCColorMenuButton::OnDrawOnCustomizeList Wird vom Framework aufgerufen, bevor ein CMFCColorMenuButton Objekt in der Liste eines Symbolleistenanpassungsdialogfelds angezeigt wird.

Hinweise

Um den ursprünglichen Menübefehl oder die Symbolleistenschaltfläche durch ein CMFCColorMenuButton Objekt zu ersetzen, erstellen Sie das CMFCColorMenuButton Objekt, legen Sie alle entsprechenden CMFCColorBar-Klassenstile fest, und rufen Sie dann die ReplaceButton Methode der CMFCToolBar-Klasse auf. Wenn Sie eine Symbolleiste anpassen, rufen Sie die CMFCToolBarsCustomizeDialog::ReplaceButton-Methode auf.

Das Dialogfeld "Farbauswahl" wird während der Verarbeitung des CMFCColorMenuButton::CreatePopupMenuMenu-Ereignishandlers erstellt. Der Ereignishandler benachrichtigt den übergeordneten Frame mit einer WM_COMMAND Nachricht. Das CMFCColorMenuButton Objekt sendet die Steuerelement-ID, die dem ursprünglichen Menübefehl oder der Symbolleistenschaltfläche zugewiesen ist.

Beispiel

Im folgenden Beispiel wird das Erstellen und Konfigurieren einer Farbmenüschaltfläche mithilfe verschiedener Methoden in der CMFCColorMenuButton Klasse veranschaulicht. Im Beispiel wird zuerst ein CPalette Objekt erstellt und dann zum Erstellen eines Objekts der CMFCColorMenuButton Klasse verwendet. Das CMFCColorMenuButton Objekt wird dann konfiguriert, indem die automatischen und anderen Schaltflächen aktiviert und die Farbe und die Anzahl der Spalten festgelegt werden. Dieser Code ist Teil des Word Pad-Beispiels.

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;
}

Vererbungshierarchie

CObject

CMFCToolBarButton

CMFCToolBarMenuButton

CMFCColorMenuButton

Anforderungen

Kopfzeile: afxcolormenubutton.h

CMFCColorMenuButton::CMFCColorMenuButton

Erstellt ein CMFCColorMenuButton-Objekt.

CMFCColorMenuButton();

CMFCColorMenuButton(
    UINT uiCmdID,
    LPCTSTR lpszText,
    CPalette* pPalette=NULL);

Parameter

uiCmdID
[in] Eine Befehls-ID für Schaltflächen.

lpszText
[in] Der Schaltflächentext.

pPalette
[in] Ein Zeiger auf die Farbpalette der Schaltfläche.

Rückgabewert

Bemerkungen

Der erste Konstruktor ist der Standardkonstruktor. Die aktuelle Farbe und die automatische Farbe des Objekts werden in Schwarz initialisiert (RGB(0, 0, 0)).

Der zweite Konstruktor initialisiert die Schaltfläche auf die Farbe, die der angegebenen Befehls-ID entspricht.

CMFCColorMenuButton::CopyFrom

Kopiert ein CMFCToolBarMenuButton Class-abgeleitetes Objekt in ein anderes.

virtual void CopyFrom(const CMFCToolBarButton& src);

Parameter

src
[in] Schaltfläche "Quelle", die kopiert werden soll.

Hinweise

Überschreiben Sie diese Methode, um Objekte zu kopieren, die vom CMFCColorMenuButton Objekt abgeleitet sind.

CMFCColorMenuButton::CreatePopupMenuMenu

Erstellt ein Dialogfeld für die Farbauswahl.

virtual CMFCPopupMenu* CreatePopupMenu();

Rückgabewert

Ein Objekt, das ein Dialogfeld für die Farbauswahl darstellt.

Hinweise

Diese Methode wird vom Framework aufgerufen, wenn der Benutzer eine Farbmenüschaltfläche drückt.

CMFCColorMenuButton::EnableAutomaticButton

Aktiviert und deaktiviert eine "automatische" Schaltfläche, die über den regulären Farbschaltflächen positioniert ist. (Die automatische Standardschaltfläche des Systems ist beschriftet. Automatisch.)

void EnableAutomaticButton(
    LPCTSTR lpszLabel,
    COLORREF colorAutomatic,
    BOOL bEnable=TRUE);

Parameter

lpszLabel
[in] Gibt den Schaltflächentext an, der angezeigt wird, wenn die Schaltfläche automatisch wird.

colorAutomatic
[in] Gibt eine neue automatische Farbe an.

bEnable
[in] Gibt an, ob die Schaltfläche automatisch ist oder nicht.

Hinweise

Die automatische Schaltfläche wendet die aktuelle Standardfarbe an.

CMFCColorMenuButton::EnableDocumentColors

Aktiviert die Anzeige dokumentspezifischer Farben anstelle von Systemfarben.

void EnableDocumentColors(
    LPCTSTR lpszLabel,
    BOOL bEnable=TRUE);

Parameter

lpszLabel
[in] Gibt den Schaltflächentext an.

bEnable
[in] TRUE, um dokumentspezifische Farben oder FALSE anzuzeigen, um Systemfarben anzuzeigen.

Hinweise

Verwenden Sie diese Methode, um die aktuellen Dokumentfarben oder die Systempalettenfarben anzuzeigen, wenn der Benutzer auf eine Farbmenüschaltfläche klickt.

CMFCColorMenuButton::EnableOtherButton

Aktiviert und deaktiviert eine "andere" Schaltfläche, die unter den regulären Farbschaltflächen positioniert ist. (Die Standardsystemschaltfläche "sonstige" ist mit der Bezeichnung versehen. Weitere Farben.)

void EnableOtherButton(
    LPCTSTR lpszLabel,
    BOOL bAltColorDlg=TRUE,
    BOOL bEnable=TRUE);

Parameter

lpszLabel
[in] Gibt den Schaltflächentext an.

bAltColorDlg
[in] Geben Sie WAHR an, um das CMFCColorDialog Dialogfeld anzuzeigen, oder FALSE, um das Standarddialogfeld für die Systemfarbe anzuzeigen.

bEnable
[in] Geben Sie WAHR an, um die Schaltfläche "andere" anzuzeigen; andernfalls FALSE. Der Standardwert ist TRUE.

Hinweise

CMFCColorMenuButton::EnableTearOff

Ermöglicht das Abreißen eines Farbbereichs.

void EnableTearOff(
    UINT uiID,
    int nVertDockColumns=-1,
    int nHorzDockRows=-1);

Parameter

uiID
[in] Gibt die ID für den Abbruchbereich an.

nVertDockColumns
[in] Gibt die Anzahl der Spalten im vertikal angedockten Farbbereich an, während der Zustand "Abreißen" angezeigt wird.

nHorzDockRows
[in] Gibt die Anzahl der Zeilen für den horizontal angedockten Farbbereich im Abbruchzustand an.

Hinweise

Rufen Sie diese Methode auf, um das Feature "Abreißen" für den Farbbereich zu aktivieren, der angezeigt wird, wenn die CMFCColorMenuButton Schaltfläche gedrückt wird.

CMFCColorMenuButton::GetAutomaticColor

Ruft die aktuelle automatische Farbe ab.

COLORREF GetAutomaticColor() const;

Rückgabewert

Ein RGB-Farbwert, der die aktuelle automatische Farbe darstellt.

Hinweise

Rufen Sie diese Methode auf, um die automatische Farbe abzurufen, die von CMFCColorMenuButton::EnableAutomaticButton festgelegt wird.

CMFCColorMenuButton::GetColor

Ruft die Farbe der aktuellen Schaltfläche ab.

COLORREF GetColor() const;

Rückgabewert

Die Farbe der Schaltfläche.

Hinweise

CMFCColorMenuButton::GetColorByCmdID

Ruft die Farbe ab, die einer angegebenen Befehls-ID entspricht.

static COLORREF GetColorByCmdID(UINT uiCmdID);

Parameter

uiCmdID
[in] Eine Befehls-ID.

Rückgabewert

Die Farbe, die der angegebenen Befehls-ID entspricht.

Hinweise

Verwenden Sie diese Methode, wenn Sie über mehrere Farbschaltflächen in einer Anwendung verfügen. Wenn der Benutzer auf eine Farbschaltfläche klickt, sendet die Schaltfläche die Befehls-ID in einer WM_COMMAND Nachricht an das übergeordnete Element. Die GetColorByCmdID Methode verwendet die Befehls-ID, um die entsprechende Farbe abzurufen.

CMFCColorMenuButton::IsEmptyMenuAllowed

Gibt an, ob leere Menüs unterstützt werden.

virtual BOOL IsEmptyMenuAllowed() const;

Rückgabewert

Nonzero, wenn leere Menüs zulässig sind; andernfalls 0.

Hinweise

Leere Menüs werden standardmäßig unterstützt. Überschreiben Sie diese Methode, um dieses Verhalten in abgeleiteter Klasse zu ändern.

CMFCColorMenuButton::OnChangeParentWnd

Wird vom Framework aufgerufen, wenn sich das übergeordnete Fenster ändert.

virtual void OnChangeParentWnd(CWnd* pWndParent);

Parameter

pWndParent
[in] Ein Zeiger auf das neue übergeordnete Fenster.

Hinweise

CMFCColorMenuButton::OnDraw

Vom Framework aufgerufen, um ein Bild auf einer Schaltfläche anzuzeigen.

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);

Parameter

pDC
[in] Ein Zeiger auf einen Gerätekontext.

rect
[in] Ein Rechteck, das den Zuschnitt des Bereichs begrenzt.

pImages
[in] Verweist auf eine Liste von Symbolleistenbildern.

bHorz
[in] TRUE, um anzugeben, dass sich die Symbolleiste in einem horizontal angedockten Zustand befindet. andernfalls FALSE. Der Standardwert ist TRUE.

bCustomizeMode
[in] TRUE, um anzugeben, dass sich die Anwendung im Anpassungsmodus befindet; andernfalls FALSE. Der Standardwert lautet FALSE.

bHighlight
[in] TRUE, um anzugeben, dass die Schaltfläche hervorgehoben ist; andernfalls FALSE. Der Standardwert lautet FALSE.

bDrawBorder
[in] TRUE, um anzugeben, dass der Rahmen der Schaltfläche angezeigt wird; andernfalls FALSE. Der Standardwert ist TRUE.

bGrayDisabledButtons
[in] TRUE, um anzugeben, dass deaktivierte Schaltflächen abgeblendet (abgeblendet) sind; andernfalls FALSE. Der Standardwert ist TRUE.

Hinweise

CMFCColorMenuButton::OnDrawOnCustomizeList

Wird vom Framework aufgerufen, bevor ein CMFCColorMenuButton Objekt in der Liste eines Symbolleistenanpassungsdialogfelds angezeigt wird.

virtual int OnDrawOnCustomizeList(
    CDC* pDC,
    const CRect& rect,
    BOOL bSelected);

Parameter

pDC
[in] Ein Zeiger auf einen Gerätekontext.

rect
[in] Ein Rechteck, das die zu zeichnende Schaltfläche begrenzt.

bSelected
[in] TRUE gibt an, dass sich die Schaltfläche im ausgewählten Zustand befindet. andernfalls FALSE.

Rückgabewert

Die Breite der Schaltfläche.

Hinweise

Diese Methode wird vom Framework aufgerufen, wenn ein CMFCColorMenuButton Objekt während des Anpassungsprozesses der Symbolleiste im Listenfeld angezeigt wird.

CMFCColorMenuButton::OpenColorDialog

Öffnet ein Dialogfeld für die Farbauswahl.

virtual BOOL OpenColorDialog(
    const COLORREF colorDefault,
    COLORREF& colorRes);

Parameter

colorDefault
[in] Die Standardfarbe, die im Dialogfeld "Farbe" ausgewählt ist.

colorRes
[out] Gibt die Farbe zurück, die der Benutzer im Dialogfeld "Farbe" auswählt.

Rückgabewert

Nonzero, wenn der Benutzer eine neue Farbe auswählt; andernfalls 0.

Hinweise

Wenn auf die Menüschaltfläche geklickt wird, rufen Sie diese Methode auf, um ein Farbdialogfeld zu öffnen. Wenn der Rückgabewert ungleich Null ist, wird die farbe, die der Benutzer auswählt, im colorRes-Parameter gespeichert. Verwenden Sie die CMFCColorMenuButton::EnableOtherButton-Methode , um zwischen dem Standardfarbdialogfeld und dem Dialogfeld CMFCColorDialog-Klasse zu wechseln.

CMFCColorMenuButton::SetColor

Legt die Farbe der aktuellen Farbschaltfläche fest.

virtual void SetColor(
    COLORREF clr,
    BOOL bNotify=TRUE);

Parameter

clr
[in] Ein RGB-Farbwert.

bNotify
[in] TRUE, um die Clr-Parameterfarbe auf eine beliebige zugeordnete Menüschaltfläche oder Symbolleistenschaltfläche anzuwenden, andernfalls FALSE.

Hinweise

Rufen Sie diese Methode auf, um die Farbe der aktuellen Farbschaltfläche zu ändern. Wenn der Parameter "bNotify " nicht null ist, wird die Farbe der entsprechenden Schaltfläche in einem beliebigen zugeordneten Popupmenü oder einer symbolleiste in die durch den Clr-Parameter angegebene Farbe geändert.

CMFCColorMenuButton::SetColorByCmdID

Legt die Farbe der angegebenen Menüschaltfläche für Farben fest.

static void SetColorByCmdID(
    UINT uiCmdID,
    COLORREF color);

Parameter

uiCmdID
[in] Die Ressourcen-ID einer Farbmenüschaltfläche.

color
[in] Ein RGB-Farbwert.

CMFCColorMenuButton::SetColorName

Legt einen neuen Namen für die angegebene Farbe fest.

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

Parameter

color
[in] Der RGB-Wert der Farbe, deren Name geändert wird.

strName
[in] Der neue Name der Farbe.

Hinweise

CMFCColorMenuButton::SetColumnsNumber

Legt die Anzahl der Spalten fest, die in einem Farbauswahlsteuerelement angezeigt werden sollen ( CMFCColorBar -Objekt).

void SetColumnsNumber(int nColumns);

Parameter

nColumns
[in] Die Anzahl der anzuzeigenden Spalten.

Hinweise

Weitere Informationen

Hierarchiediagramm
Klassen
CMFCColorBar-Klasse
CMFCToolBar-Klasse
CMFCToolBarsCustomizeDialog-Klasse
CMFCColorButton-Klasse