CMFCRibbonButton, classe
La classe CMFCRibbonButton
implémente des boutons que vous pouvez placer sur des éléments de barre de ruban, tels que les volets, les barres d'outils Accès rapide et les menus contextuels.
Pour plus d’informations, consultez le code source situé dans le dossier VC\atlmfc\src\mfc de votre installation de Visual Studio.
class CMFCRibbonButton : public CMFCRibbonBaseElement
Nom | Description |
---|---|
CMFCRibbonButton ::CMFCRibbonButton | Construit un objet bouton de ruban. |
Nom | Description |
---|---|
CMFCRibbonButton ::OnClick | Appelé par l'infrastructure quand l'utilisateur clique sur le bouton. |
L'exemple suivant montre comment utiliser les différentes méthodes de la classe CMFCRibbonButton
. Il montre comment construire un objet de la classe CMFCRibbonButton
, affecter un menu contextuel au bouton du ruban, définir la description du bouton, supprimer un élément de menu du menu contextuel et aligner le menu contextuel à droite par rapport au bord du bouton.
strTemp.LoadString(IDS_RIBBON_STYLE);
// The first parameter is the command ID of the button.
// The third parameter is a zero-based index of the button's small image in the
// image list of the parent category.
// The fourth parameter is a zero-based index of the button's large image in the
// image list of the parent category.
CMFCRibbonButton *pVisualStyleButton = new CMFCRibbonButton(1, strTemp, -1, -1);
pVisualStyleButton->SetMenu(IDR_THEME_MENU, TRUE, TRUE);
strTemp.LoadString(IDS_RIBBON_STYLE_TIP);
pVisualStyleButton->SetToolTipText(strTemp);
strTemp.LoadString(IDS_RIBBON_STYLE_DESC);
pVisualStyleButton->SetDescription(strTemp);
pVisualStyleButton->RemoveSubItem(0);
pVisualStyleButton->SetRightAlignMenu(TRUE);
Pour utiliser un bouton de ruban dans une application, construisez l’objet bouton et ajoutez-le au panneau de ruban approprié.
CMFCRibbonPanel* pPanel = pCategory->AddPanel (
_T("Clipboard"), // Panel name
m_PanelIcons.ExtractIcon (0)); // Panel icon
// Create the first button ("Paste"):
CMFCRibbonButton* pPasteButton =
new CMFCRibbonButton (ID_EDIT_PASTE, _T("Paste"), -1, 0);
// The third parameter (-1) disables small images for button.
// This button is always displayed with a large image
// Associate a pop-up menu with the "Paste" button:
pPasteButton->SetMenu (IDR_CONTEXT_MENU);
// Add buttons to the panel. These buttons have only small images.
pPanel->Add (new CMFCRibbonButton (ID_EDIT_CUT, _T("Cut"), 1));
pPanel->Add (new CMFCRibbonButton (ID_EDIT_COPY, _T("Copy"), 2));
pPanel->Add (new CMFCRibbonButton (ID_EDIT_PAINT, _T("Paint"), 9));
En-tête : afxribbonbutton.h
Ajoute un élément de menu au menu contextuel associé au bouton.
void AddSubItem(
CMFCRibbonBaseElement* pSubItem,
int nIndex=-1);
pSubItem
[in] Spécifie un pointeur vers le nouvel élément à ajouter.
nIndex
[in] Spécifie l’index auquel ajouter l’élément au tableau d’éléments de menu du bouton ; -1 pour ajouter l’élément à la fin du tableau d’éléments de menu.
virtual BOOL CanBeStretched();
virtual void CleanUpSizes();
virtual void ClosePopupMenu();
Construit un objet bouton de ruban.
CMFCRibbonButton(
UINT nID,
LPCTSTR lpszText,
int nSmallImageIndex=-1,
int nLargeImageIndex=-1,
BOOL bAlwaysShowDescription=FALSE);
CMFCRibbonButton(
UINT nID,
LPCTSTR lpszText,
HICON hIcon,
BOOL bAlwaysShowDescription=FALSE,
HICON hIconSmall=NULL,
BOOL bAutoDestroyIcon=FALSE,
BOOL bAlphaBlendIcon=FALSE);
nID
[in] Spécifie l’ID de commande du bouton.
lpszText
[in] Spécifie l’étiquette de texte du bouton.
nSmallImageIndex
[in] Spécifie un index de base zéro de la petite image du bouton dans la liste d’images de la catégorie parente.
nLargeImageIndex
[in] Spécifie un index de base zéro de la grande image du bouton dans la liste d’images de la catégorie parente.
hIcon
[in] Spécifie un handle à l’icône utilisée par l’application comme image du bouton.
L’exemple suivant montre comment construire un CMFCRibbonButton
objet.
strTemp.LoadString(IDS_RIBBON_CUT);
CMFCRibbonButton *butn = new CMFCRibbonButton(ID_EDIT_CUT, strTemp, 1);
butn->SetKeys(_T("k"));
CSize DrawBottomText(
CDC* pDC,
BOOL bCalcOnly);
[in] pDC
[in] bCalcOnly
virtual void DrawImage(
CDC* pDC,
RibbonImageType type,
CRect rectImage);
[in] pDC
[in] type
[in] rectImage
virtual int DrawRibbonText(
CDC* pDC,
const CString& strText,
CRect rectText,
UINT uiDTFlags,
COLORREF clrText = (COLORREF)-1);
[in] pDC
[in] strText
[in] rectText
[in] uiDTFlags
[in] clrText
Retourne l'index d'un élément de menu contextuel associé à l'ID de commande spécifié.
int FindSubItemIndexByID(UINT uiID) const;
uiID
[in] Spécifie l’ID de commande de l’élément de menu contextuel.
Index de base zéro du sous-élément associé à l’UIID. -1 s’il n’y a pas de sous-élément de ce type.
CRect GetCommandRect() const;
virtual CSize GetCompactSize(CDC* pDC);
[in] pDC
HICON GetIcon(BOOL bLargeIcon = TRUE) const;
[in] bLargeIcon
Retourne l'index de l'image associée au bouton.
int GetImageIndex(BOOL bLargeImage) const;
bLargeImage
[in] Si la valeur est TRUE, retourne l’index d’image dans la liste d’images qui contient les grandes images ; sinon, retourne l’index d’image dans la liste d’images qui contient les petites images.
Index de l’image du bouton dans la liste d’images associée.
virtual CSize GetImageSize(RibbonImageType type) const;
[in] type
virtual CSize GetIntermediateSize(CDC* pDC);
[in] pDC
Retourne un handle de menu Windows affecté au bouton du ruban.
HMENU GetMenu() const;
Handle d’un menu Windows affecté au bouton ; NULL s’il n’y a pas de menu affecté.
CRect GetMenuRect() const;
virtual CSize GetRegularSize(CDC* pDC);
[in] pDC
const CArray<CMFCRibbonBaseElement*, CMFCRibbonBaseElement*>& GetSubItems() const;
int GetTextRowHeight() const;
virtual CString GetToolTipText() const;
virtual BOOL HasCompactMode() const;
virtual BOOL HasIntermediateMode() const;
virtual BOOL HasLargeMode() const;
virtual BOOL HasMenu() const;
virtual BOOL IsAlwaysDrawBorder() const;
virtual BOOL IsAlwaysLargeImage() const;
virtual BOOL IsApplicationButton() const;
virtual BOOL IsCommandAreaHighlighted() const;
Spécifie si la commande par défaut d’un bouton de ruban est activée.
BOOL IsDefaultCommand() const;
TRUE si vous avez activé la commande par défaut pour un bouton de ruban ; FALSE dans le cas contraire.
virtual BOOL IsDefaultPanelButton() const;
virtual BOOL IsDrawTooltipImage() const;
BOOL IsLargeImage() const;
virtual BOOL IsMenuAreaHighlighted() const;
BOOL IsMenuOnBottom() const;
virtual BOOL IsPopupDefaultMenuLook() const;
Spécifie si le menu est aligné à droite.
BOOL IsRightAlignMenu() const;
TRUE si le menu est aligné à droite ; sinon FALSE.
BOOL IsSingleLineText() const;
virtual void OnCalcTextSize(CDC* pDC);
[in] pDC
Appelé par l'infrastructure quand l'utilisateur clique sur le bouton.
virtual void OnClick(CPoint point);
point
[in] Spécifie la position du clic de la souris.
Remplacez cette méthode dans une classe dérivée si vous souhaitez gérer cet événement.
virtual void OnDraw(CDC* pDC);
[in] pDC
virtual void OnDrawBorder(CDC* pDC);
[in] pDC
virtual COLORREF OnFillBackground(CDC* pDC);
[in] pDC
Supprime tous les éléments de menu du menu contextuel.
void RemoveAllSubItems();
Supprime un élément de menu du menu contextuel.
BOOL RemoveSubItem(int nIndex);
nIndex
[in] Spécifie l’index de base zéro de l’élément de menu que vous souhaitez supprimer.
TRUE si l’élément spécifié a été supprimé avec succès ; sinon FALSE si nIndex est négatif ou dépasse le nombre d’éléments de menu dans le menu contextuel.
Définit les données d’accessibilité du bouton de ruban.
virtual BOOL SetACCData(
CWnd* pParent,
CAccessibilityData& data);
pParent
La fenêtre parente de l’élément ruban.
data
Les données d’accessibilité de l’élément ruban.
Retourne TRUE en cas de réussite ; sinon FALSE.
Précise si le bouton affiche une image grande ou petite quand l‘utilisateur réduit le bouton.
void SetAlwaysLargeImage(BOOL bSet=TRUE);
bSet
[in] Si la valeur est TRUE, le bouton affiche une grande image. Sinon, le bouton affiche une petite image.
Active la commande par défaut pour le bouton du ruban.
void SetDefaultCommand(BOOL bSet=TRUE);
bSet
[in] Si la valeur est TRUE, le bouton peut exécuter sa commande par défaut. Si la valeur est FALSE, le bouton ne peut pas exécuter sa commande par défaut.
bSet est pertinent uniquement lorsque le bouton a un menu. Si bSet a la valeur TRUE, le bouton peut exécuter sa commande par défaut et le menu contextuel affecté s’affiche uniquement lorsqu’un utilisateur clique sur la flèche au bord droit du bouton. Sinon, le bouton ne peut pas exécuter sa commande par défaut et le menu contextuel s’affiche, quelle que soit la zone du bouton sur lequel l’utilisateur clique.
virtual void SetDescription(LPCTSTR lpszText);
[in] lpszText
Affecte un index à l'image du bouton.
void SetImageIndex(
int nIndex,
BOOL bLargeImage);
nIndex
[in] Spécifie l’index d’image.
bLargeImage
[in] Si la valeur est TRUE, l’index spécifié fait référence à la liste des images volumineuses. Sinon, l’index fait référence à la liste des petites images.
Affecte un menu contextuel au bouton du ruban.
void SetMenu(
HMENU hMenu,
BOOL bIsDefaultCommand=FALSE,
BOOL bRightAlign=FALSE);
void SetMenu(
UINT uiMenuResID,
BOOL bIsDefaultCommand=FALSE,
BOOL bRightAlign=FALSE);
hMenu
Handle vers un menu Windows.
bIsDefaultCommand
Si la valeur est TRUE, le bouton peut exécuter sa commande par défaut ; sinon, le bouton affiche un menu contextuel.
bRightAlign
Si la valeur est TRUE, le menu est aligné à droite. Sinon, le menu est aligné à gauche.
uiMenuResID
ID de ressource de menu.
Lorsque l’application affecte le menu au bouton, le bouton affiche une flèche sur son côté droit. Si bIsDefaultCommand a la valeur TRUE, le menu s’affiche uniquement lorsque l’utilisateur clique sur la flèche. Si l’utilisateur clique sur le bouton, sa commande par défaut est exécutée. Si bIsDefaultCommand a la valeur FALSE, le menu s’affiche en cliquant n’importe où sur le bouton.
virtual void SetParentCategory(CMFCRibbonCategory* pParent);
[in] pParent
Aligne le menu contextuel sur le bord du bouton.
void SetRightAlignMenu(BOOL bSet=TRUE);
bSet
[in] Si la valeur est TRUE, le menu est aligné à droite. Sinon, le menu est aligné à gauche
virtual void SetText(LPCTSTR lpszText);
[in] lpszText