CMFCColorMenuButton, classe

La CMFCColorMenuButton classe prend en charge une commande de menu ou un bouton de barre d’outils qui démarre une boîte de dialogue sélecteur de couleurs.

Syntaxe

class CMFCColorMenuButton : public CMFCToolBarMenuButton

Membres

Constructeurs publics

Nom Description
CMFCColorMenuButton ::CMFCColorMenuButton Construit un objet CMFCColorMenuButton.

Méthodes publiques

Nom Description
CMFCColorMenuButton ::EnableAutomaticButton Active et désactive un bouton « automatique » positionné au-dessus des boutons de couleur standard. (Le bouton automatique du système standard est étiqueté Automatique.)
CMFCColorMenuButton ::EnableDocumentColors Active l’affichage des couleurs spécifiques au document au lieu des couleurs système.
CMFCColorMenuButton ::EnableOtherButton Active et désactive un bouton « autre » positionné sous les boutons de couleur standard. (Le bouton « other » du système standard est étiqueté Autres couleurs.)
CMFCColorMenuButton ::EnableTearOff Permet de supprimer un volet de couleurs.
CMFCColorMenuButton ::GetAutomaticColor Récupère la couleur automatique actuelle.
CMFCColorMenuButton ::GetColor Récupère la couleur du bouton actuel.
CMFCColorMenuButton ::GetColorByCmdID Récupère la couleur qui correspond à un ID de commande spécifié.
CMFCColorMenuButton ::OnChangeParentWnd Appelé par l’infrastructure lorsque la fenêtre parente change.
CMFCColorMenuButton ::OpenColorDialog Ouvre une boîte de dialogue de sélection de couleur.
CMFCColorMenuButton ::SetColor Définit la couleur du bouton de couleur actuel.
CMFCColorMenuButton ::SetColorByCmdID Définit la couleur du bouton de menu couleur spécifié.
CMFCColorMenuButton ::SetColorName Définit un nouveau nom pour la couleur spécifiée.
CMFCColorMenuButton ::SetColumnsNumber Définit le nombre de colonnes affichées par un CMFCColorBar objet.

Méthodes protégées

Nom Description
CMFCColorMenuButton ::CopyFrom Copie un autre bouton de barre d’outils vers le bouton actif.
CMFCColorMenuButton ::CreatePopupMenu Crée une boîte de dialogue sélecteur de couleurs.
CMFCColorMenuButton ::IsEmptyMenuAllowed Indique si les menus vides sont pris en charge.
CMFCColorMenuButton ::OnDraw Appelé par l’infrastructure pour afficher une image sur un bouton.
CMFCColorMenuButton ::OnDrawOnCustomizeList Appelé par l’infrastructure avant qu’un CMFCColorMenuButton objet soit affiché dans la liste d’une boîte de dialogue de personnalisation de la barre d’outils.

Notes

Pour remplacer la commande de menu d’origine ou le bouton de barre d’outils par un CMFCColorMenuButton objet, créez l’objetCMFCColorMenuButton, définissez les styles de classe CMFCColorBar appropriés, puis appelez la ReplaceButton méthode de la classe CMFCToolBar Class. Si vous personnalisez une barre d’outils, appelez la méthode CMFCToolBarsCustomizeDialog ::ReplaceButton .

La boîte de dialogue sélecteur de couleurs est créée pendant le traitement du gestionnaire d’événements CMFCColorMenuButton ::CreatePopupMenu . Le gestionnaire d’événements avertit le cadre parent avec un message WM_COMMAND. L’objet CMFCColorMenuButton envoie l’ID de contrôle affecté au bouton de commande ou de barre d’outils du menu d’origine.

Exemple

L’exemple suivant montre comment créer et configurer un bouton de menu couleur à l’aide de différentes méthodes dans la CMFCColorMenuButton classe. Dans l’exemple, un CPalette objet est créé d’abord, puis utilisé pour construire un objet de la CMFCColorMenuButton classe. L’objet CMFCColorMenuButton est ensuite configuré en activant ses boutons automatiques et autres, et en définissant sa couleur et le nombre de colonnes. Ce code fait partie de l’exemple de panneau Word.

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

Hiérarchie d'héritage

CObject

CMFCToolBarButton

CMFCToolBarMenuButton

CMFCColorMenuButton

Spécifications

En-tête : afxcolormenubutton.h

CMFCColorMenuButton ::CMFCColorMenuButton

Construit un objet CMFCColorMenuButton.

CMFCColorMenuButton();

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

Paramètres

uiCmdID
[in] ID de commande bouton.

lpszText
[in] Texte du bouton.

pPalette
[in] Pointeur vers la palette de couleurs du bouton.

Valeur de retour

Notes

Le premier constructeur est le constructeur par défaut. La couleur actuelle et la couleur automatique de l’objet sont initialisées en noir (RVB(0, 0, 0)).

Le deuxième constructeur initialise le bouton sur la couleur correspondant à l’ID de commande spécifié.

CMFCColorMenuButton ::CopyFrom

Copie un objet dérivé de la classe CMFCToolBarMenuButton vers un autre.

virtual void CopyFrom(const CMFCToolBarButton& src);

Paramètres

src
[in] Bouton source à copier.

Notes

Remplacez cette méthode pour copier des objets dérivés de l’objet CMFCColorMenuButton .

CMFCColorMenuButton ::CreatePopupMenu

Crée une boîte de dialogue sélecteur de couleurs.

virtual CMFCPopupMenu* CreatePopupMenu();

Valeur de retour

Objet qui représente une boîte de dialogue sélecteur de couleurs.

Notes

Cette méthode est appelée par l’infrastructure lorsque l’utilisateur appuie sur un bouton de menu couleur.

CMFCColorMenuButton ::EnableAutomaticButton

Active et désactive un bouton « automatique » positionné au-dessus des boutons de couleur standard. (Le bouton automatique du système standard est étiqueté Automatique.)

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

Paramètres

lpszLabel
[in] Spécifie le texte du bouton qui s’affiche lorsque le bouton devient automatique.

colorAutomatic
[in] Spécifie une nouvelle couleur automatique.

bEnable
[in] Spécifie si le bouton est automatique ou non.

Notes

Le bouton automatique applique la couleur par défaut actuelle.

CMFCColorMenuButton ::EnableDocumentColors

Active l’affichage des couleurs spécifiques au document au lieu des couleurs système.

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

Paramètres

lpszLabel
[in] Spécifie le texte du bouton.

bEnable
[in] TRUE pour afficher les couleurs spécifiques au document ou FALSE pour afficher les couleurs système.

Notes

Utilisez cette méthode pour afficher les couleurs actuelles du document ou les couleurs de palette système lorsque l’utilisateur clique sur un bouton de menu couleur.

CMFCColorMenuButton ::EnableOtherButton

Active et désactive un bouton « autre » positionné sous les boutons de couleur standard. (Le bouton « other » du système standard est étiqueté Autres couleurs.)

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

Paramètres

lpszLabel
[in] Spécifie le texte du bouton.

bAltColorDlg
[in] Spécifiez TRUE pour afficher la CMFCColorDialog boîte de dialogue ou FALSE pour afficher la boîte de dialogue couleur système standard.

bEnable
[in] Spécifiez TRUE pour afficher le bouton « autre » ; sinon, FALSE. La valeur par défaut est TRUE.

Notes

CMFCColorMenuButton ::EnableTearOff

Permet de supprimer un volet de couleurs.

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

Paramètres

uiID
[in] Spécifie l’ID du volet déchirure.

nVertDockColumns
[in] Spécifie le nombre de colonnes dans le volet couleur ancré verticalement tout en déchirant l’état.

nHorzDockRows
[in] Spécifie le nombre de lignes pour le volet de couleurs ancré horizontalement tout en déchirant l’état.

Notes

Appelez cette méthode pour activer la fonctionnalité « déchirure » pour le volet de couleurs qui s’affiche lorsque le CMFCColorMenuButton bouton est enfoncé.

CMFCColorMenuButton ::GetAutomaticColor

Récupère la couleur automatique actuelle.

COLORREF GetAutomaticColor() const;

Valeur de retour

Valeur de couleur RVB qui représente la couleur automatique actuelle.

Notes

Appelez cette méthode pour obtenir la couleur automatique définie par CMFCColorMenuButton ::EnableAutomaticButton.

CMFCColorMenuButton ::GetColor

Récupère la couleur du bouton actuel.

COLORREF GetColor() const;

Valeur de retour

Couleur du bouton.

Notes

CMFCColorMenuButton ::GetColorByCmdID

Récupère la couleur qui correspond à un ID de commande spécifié.

static COLORREF GetColorByCmdID(UINT uiCmdID);

Paramètres

uiCmdID
[in] ID de commande.

Valeur de retour

Couleur qui correspond à l’ID de commande spécifié.

Notes

Utilisez cette méthode lorsque vous avez plusieurs boutons de couleur dans une application. Lorsque l’utilisateur clique sur un bouton couleur, le bouton envoie son ID de commande dans un message WM_COMMAND à son parent. La GetColorByCmdID méthode utilise l’ID de commande pour récupérer la couleur correspondante.

CMFCColorMenuButton ::IsEmptyMenuAllowed

Indique si les menus vides sont pris en charge.

virtual BOOL IsEmptyMenuAllowed() const;

Valeur de retour

Différent de zéro si les menus vides sont autorisés ; sinon, zéro.

Notes

Les menus vides sont pris en charge par défaut. Remplacez cette méthode pour modifier ce comportement dans la classe dérivée.

CMFCColorMenuButton ::OnChangeParentWnd

Appelé par l’infrastructure lorsque la fenêtre parente change.

virtual void OnChangeParentWnd(CWnd* pWndParent);

Paramètres

pWndParent
[in] Pointeur vers la nouvelle fenêtre parente.

Notes

CMFCColorMenuButton ::OnDraw

Appelé par l’infrastructure pour afficher une image sur un bouton.

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

Paramètres

pDC
[in] Pointeur vers un contexte d’appareil.

rect
[in] Rectangle qui limite la zone à redessiner.

pImages
[in] Pointe vers une liste d’images de barre d’outils.

bHorz
[in] TRUE pour spécifier que la barre d’outils est dans un état ancré horizontal ; sinon, FALSE. La valeur par défaut est TRUE.

bCustomizeMode
[in] TRUE pour spécifier que l’application est en mode de personnalisation ; sinon, FALSE. La valeur par défaut est FALSE.

bHighlight
[in] TRUE pour spécifier que le bouton est mis en surbrillance ; sinon, FALSE. La valeur par défaut est FALSE.

bDrawBorder
[in] TRUE pour spécifier que la bordure du bouton est affichée ; sinon, FALSE. La valeur par défaut est TRUE.

bGrayDisabledButtons
[in] TRUE pour spécifier que les boutons désactivés sont grisés (grisés) ; sinon, FALSE. La valeur par défaut est TRUE.

Notes

CMFCColorMenuButton ::OnDrawOnCustomizeList

Appelé par l’infrastructure avant qu’un CMFCColorMenuButton objet soit affiché dans la liste d’une boîte de dialogue de personnalisation de la barre d’outils.

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

Paramètres

pDC
[in] Pointeur vers un contexte d’appareil.

rect
[in] Rectangle qui limite le bouton à dessiner.

bSelected
[in] TRUE spécifie que le bouton est dans l’état sélectionné ; sinon, FALSE.

Valeur de retour

Largeur du bouton.

Notes

Cette méthode est appelée par l’infrastructure lorsqu’un CMFCColorMenuButton objet est affiché dans la zone de liste pendant le processus de personnalisation de la barre d’outils.

CMFCColorMenuButton ::OpenColorDialog

Ouvre une boîte de dialogue de sélection de couleur.

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

Paramètres

colorDefault
[in] Couleur par défaut sélectionnée dans la boîte de dialogue couleur.

colorRes
[out] Retourne la couleur que l’utilisateur sélectionne dans la boîte de dialogue couleur.

Valeur de retour

Différent de zéro si l’utilisateur sélectionne une nouvelle couleur ; sinon, zéro.

Notes

Lorsque le bouton de menu est cliqué, appelez cette méthode pour ouvrir une boîte de dialogue couleur. Si la valeur de retour n’est pas nulle, la couleur sélectionnée par l’utilisateur est stockée dans le paramètre colorRes . Utilisez la méthode CMFCColorMenuButton ::EnableOtherButton pour basculer entre la boîte de dialogue couleur standard et la boîte de dialogue Classe CMFCColorDialog.

CMFCColorMenuButton ::SetColor

Définit la couleur du bouton de couleur actuel.

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

Paramètres

clr
[in] Valeur de couleur RVB.

bNotify
[in] TRUE pour appliquer la couleur du paramètre clr à n’importe quel bouton de menu ou bouton de barre d’outils associé ; sinon, FALSE.

Notes

Appelez cette méthode pour modifier la couleur du bouton de couleur actuel. Si le paramètre bNotify n’est pas différent de zéro, la couleur du bouton correspondant sur n’importe quel menu contextuel ou barre d’outils associé est remplacée par la couleur spécifiée par le paramètre clr .

CMFCColorMenuButton ::SetColorByCmdID

Définit la couleur du bouton de menu couleur spécifié.

static void SetColorByCmdID(
    UINT uiCmdID,
    COLORREF color);

Paramètres

uiCmdID
[in] ID de ressource d’un bouton de menu couleur.

color
[in] Valeur de couleur RVB.

CMFCColorMenuButton ::SetColorName

Définit un nouveau nom pour la couleur spécifiée.

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

Paramètres

color
[in] Valeur RVB de la couleur dont le nom change.

strName
[in] Nouveau nom de la couleur.

Notes

CMFCColorMenuButton ::SetColumnsNumber

Définit le nombre de colonnes à afficher dans un contrôle de sélection de couleurs ( objet CMFCColorBar ).

void SetColumnsNumber(int nColumns);

Paramètres

nColumns
[in] Nombre de colonnes à afficher.

Notes

Voir aussi

Graphique hiérarchique
Classes
CMFCColorBar, classe
CMFCToolBar, classe
CMFCToolBarsCustomizeDialog, classe
CMFCColorButton, classe