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