CMFCRibbonButton 类

CMFCRibbonButton 类实现可放置在功能区栏元素(例如面板、快速访问工具栏和弹出菜单)上的按钮。

有关详细信息,请参阅所安装的 Visual Studio 的 C\atlmfc\src\mfc 文件夹中的源代码。

语法

class CMFCRibbonButton : public CMFCRibbonBaseElement

成员

公共构造函数

名称 描述
CMFCRibbonButton::CMFCRibbonButton 构造一个功能区按钮对象。

公共方法

名称 描述
CMFCRibbonButton::AddSubItem 将菜单项添加到与按钮相关联的弹出菜单。
CMFCRibbonButton::CanBeStretched (重写 CMFCRibbonBaseElement::CanBeStretched。)
CMFCRibbonButton::CleanUpSizes (重写 CMFCRibbonBaseElement::CleanUpSizes。)
CMFCRibbonButton::ClosePopupMenu (重写 CMFCRibbonBaseElement::ClosePopupMenu。)
CMFCRibbonButton::DrawBottomText
CMFCRibbonButton::DrawImage (重写 CMFCRibbonBaseElement::DrawImage。)
CMFCRibbonButton::DrawRibbonText
CMFCRibbonButton::FindSubItemIndexByID 返回与指定的命令 ID 相关联的弹出菜单项的索引。
CMFCRibbonButton::GetCommandRect
CMFCRibbonButton::GetCompactSize 返回功能区元素的压缩大小。 (重写 CMFCRibbonBaseElement::GetCompactSize。)
CMFCRibbonButton::GetIcon
CMFCRibbonButton::GetImageIndex 返回与按钮相关联的图像的索引。
CMFCRibbonButton::GetImageSize 返回功能区元素的图像大小。 (重写 CMFCRibbonBaseElement::GetImageSize。)
CMFCRibbonButton::GetIntermediateSize 返回处于中间状态的功能区元素的大小。 (重写 CMFCRibbonBaseElement::GetIntermediateSize。)
CMFCRibbonButton::GetMenu 将一个句柄返回给一个分配给功能区按钮的 Windows 菜单。
CMFCRibbonButton::GetMenuRect
CMFCRibbonButton::GetRegularSize 返回功能区元素的常规大小。 (重写 CMFCRibbonBaseElement::GetRegularSize。)
CMFCRibbonButton::GetSubItems
CMFCRibbonButton::GetTextRowHeight
CMFCRibbonButton::GetToolTipText 返回功能区元素的工具提示文本。 (重写 CMFCRibbonBaseElement::GetToolTipText。)
CMFCRibbonButton::HasCompactMode 指定功能区元素是否有压缩模式。 (重写 CMFCRibbonBaseElement::HasCompactMode。)
CMFCRibbonButton::HasIntermediateMode 指定功能区元素是否有中间模式。 (重写 CMFCRibbonBaseElement::HasIntermediateMode。)
CMFCRibbonButton::HasLargeMode 确定功能区元素是否有大型模式。 (重写 CMFCRibbonBaseElement::HasLargeMode。)
CMFCRibbonButton::HasMenu (重写 CMFCRibbonBaseElement::HasMenu。)
CMFCRibbonButton::IsAlwaysDrawBorder
CMFCRibbonButton::IsAlwaysLargeImage (重写 CMFCRibbonBaseElement::IsAlwaysLargeImage。)
CMFCRibbonButton::IsApplicationButton
CMFCRibbonButton::IsCommandAreaHighlighted
CMFCRibbonButton::IsDefaultCommand 确定是否已启用功能区按钮的默认命令。
CMFCRibbonButton::IsDefaultPanelButton
CMFCRibbonButton::IsDrawTooltipImage
CMFCRibbonButton::IsLargeImage
CMFCRibbonButton::IsMenuAreaHighlighted
CMFCRibbonButton::IsMenuOnBottom
CMFCRibbonButton::IsPopupDefaultMenuLook
CMFCRibbonButton::IsRightAlignMenu 确定菜单是否为右对齐。
CMFCRibbonButton::IsSingleLineText
CMFCRibbonButton::OnCalcTextSize (重写 CMFCRibbonBaseElement::OnCalcTextSize。)
CMFCRibbonButton::OnDrawBorder
CMFCRibbonButton::OnDraw 由框架调用以绘制功能区元素。 (重写 CMFCRibbonBaseElement::OnDraw。)
CMFCRibbonButton::OnFillBackground
CMFCRibbonButton::RemoveAllSubItems 从弹出菜单中删除所有菜单项。
CMFCRibbonButton::RemoveSubItem 从弹出菜单中删除一个菜单项。
CMFCRibbonButton::SetACCData (重写 CMFCRibbonBaseElement::SetACCData。)
CMFCRibbonButton::SetAlwaysLargeImage 指定当用户折叠按钮时,按钮显示大图像还是小图像。
CMFCRibbonButton::SetDefaultCommand 启用功能区按钮的默认命令。
CMFCRibbonButton::SetDescription 设置功能区元素的说明。 (重写 CMFCRibbonBaseElement::SetDescription。)
CMFCRibbonButton::SetImageIndex 将索引分配给按钮的图像。
CMFCRibbonButton::SetMenu 将弹出菜单分配给功能区按钮。
CMFCRibbonButton::SetParentCategory (重写 CMFCRibbonBaseElement::SetParentCategory。)
CMFCRibbonButton::SetRightAlignMenu 使弹出菜单与按钮的右侧对齐。
CMFCRibbonButton::SetText 设置功能区元素的文本。 (重写 CMFCRibbonBaseElement::SetText。)

受保护方法

名称 描述
CMFCRibbonButton::OnClick 当用户单击按钮时,由框架调用。

示例

下面的示例演示如何使用 CMFCRibbonButton 类中的各种方法。 该示例展示如何构造 CMFCRibbonButton 类的对象,将弹出菜单分配给功能区按钮,设置按钮的说明,从弹出菜单中删除一个菜单项,然后使弹出菜单与按钮的边缘右对齐。

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

备注

若要在应用程序中使用功能区按钮,请构造按钮对象,并将其添加到相应的功能区面板

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

继承层次结构

CObject

CMFCRibbonBaseElement

CMFCRibbonButton

要求

标头: afxribbonbutton.h

CMFCRibbonButton::AddSubItem

将菜单项添加到与按钮相关联的弹出菜单。

void AddSubItem(
    CMFCRibbonBaseElement* pSubItem,
    int nIndex=-1);

参数

pSubItem
[in] 指定指向要添加的新元素的指针。

nIndex
[in] 指定将元素添加到按钮菜单项数组的索引;如果为 -1,则在菜单项数组的末尾添加元素。

CMFCRibbonButton::CanBeStretched

virtual BOOL CanBeStretched();

返回值

注解

CMFCRibbonButton::CleanUpSizes

virtual void CleanUpSizes();

备注

CMFCRibbonButton::ClosePopupMenu

virtual void ClosePopupMenu();

注解

CMFCRibbonButton::CMFCRibbonButton

构造一个功能区按钮对象。

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] 指定按钮的命令 ID。

lpszText
[in] 指定按钮的文本标签。

nSmallImageIndex
[in] 指定父类别图像列表中按钮的小图像的从零开始的索引。

nLargeImageIndex
[in] 指定父类别图像列表中按钮的大图像的从零开始的索引。

hIcon
[in] 指定应用程序用作按钮图像的图标的句柄。

示例

以下示例演示如何构造 CMFCRibbonButton 对象。

strTemp.LoadString(IDS_RIBBON_CUT);
CMFCRibbonButton *butn = new CMFCRibbonButton(ID_EDIT_CUT, strTemp, 1);
butn->SetKeys(_T("k"));

CMFCRibbonButton::DrawBottomText

CSize DrawBottomText(
    CDC* pDC,
    BOOL bCalcOnly);

参数

[in] pDC
[in] bCalcOnly

返回值

注解

CMFCRibbonButton::DrawImage

virtual void DrawImage(
    CDC* pDC,
    RibbonImageType type,
    CRect rectImage);

参数

[in] pDC
[in] type
[in] rectImage

备注

CMFCRibbonButton::DrawRibbonText

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

返回值

注解

CMFCRibbonButton::FindSubItemIndexByID

返回与指定的命令 ID 相关联的弹出菜单项的索引。

int FindSubItemIndexByID(UINT uiID) const;

参数

uiID
[in] 指定弹出菜单项的命令 ID。

返回值

与 uiID 关联的子项的从零开始的索引。 如果没有此类子项,则为 -1。

CMFCRibbonButton::GetCommandRect

CRect GetCommandRect() const;

返回值

注解

CMFCRibbonButton::GetCompactSize

virtual CSize GetCompactSize(CDC* pDC);

参数

[in] pDC

返回值

备注

CMFCRibbonButton::GetIcon

HICON GetIcon(BOOL bLargeIcon = TRUE) const;

参数

[in] bLargeIcon

返回值

备注

CMFCRibbonButton::GetImageIndex

返回与按钮相关联的图像的索引。

int GetImageIndex(BOOL bLargeImage) const;

参数

bLargeImage
[in] 如果为 TRUE,则返回包含大图像的图像列表中的图像索引;否则返回包含小图像的图像列表中的图像索引。

返回值

相关图像列表中按钮图像的索引。

CMFCRibbonButton::GetImageSize

virtual CSize GetImageSize(RibbonImageType type) const;

参数

[in] type

返回值

备注

CMFCRibbonButton::GetIntermediateSize

virtual CSize GetIntermediateSize(CDC* pDC);

参数

[in] pDC

返回值

注解

CMFCRibbonButton::GetMenu

将一个句柄返回给一个分配给功能区按钮的 Windows 菜单。

HMENU GetMenu() const;

返回值

分配给按钮的 Windows 菜单的句柄;如果没有分配菜单,则为 NULL。

CMFCRibbonButton::GetMenuRect

CRect GetMenuRect() const;

返回值

备注

CMFCRibbonButton::GetRegularSize

virtual CSize GetRegularSize(CDC* pDC);

参数

[in] pDC

返回值

注解

CMFCRibbonButton::GetSubItems

const CArray<CMFCRibbonBaseElement*, CMFCRibbonBaseElement*>& GetSubItems() const;

返回值

备注

CMFCRibbonButton::GetTextRowHeight

int GetTextRowHeight() const;

返回值

备注

CMFCRibbonButton::GetToolTipText

virtual CString GetToolTipText() const;

返回值

备注

CMFCRibbonButton::HasCompactMode

virtual BOOL HasCompactMode() const;

返回值

备注

CMFCRibbonButton::HasIntermediateMode

virtual BOOL HasIntermediateMode() const;

返回值

备注

CMFCRibbonButton::HasLargeMode

virtual BOOL HasLargeMode() const;

返回值

注解

CMFCRibbonButton::HasMenu

virtual BOOL HasMenu() const;

返回值

注解

CMFCRibbonButton::IsAlwaysDrawBorder

virtual BOOL IsAlwaysDrawBorder() const;

返回值

备注

CMFCRibbonButton::IsAlwaysLargeImage

virtual BOOL IsAlwaysLargeImage() const;

返回值

注解

CMFCRibbonButton::IsApplicationButton

virtual BOOL IsApplicationButton() const;

返回值

备注

CMFCRibbonButton::IsCommandAreaHighlighted

virtual BOOL IsCommandAreaHighlighted() const;

返回值

注解

CMFCRibbonButton::IsDefaultCommand

指定是否启用功能区按钮的默认命令。

BOOL IsDefaultCommand() const;

返回值

如果已启用功能区按钮的默认命令,则为 TRUE;否则为 FALSE。

CMFCRibbonButton::IsDefaultPanelButton

virtual BOOL IsDefaultPanelButton() const;

返回值

备注

CMFCRibbonButton::IsDrawTooltipImage

virtual BOOL IsDrawTooltipImage() const;

返回值

备注

CMFCRibbonButton::IsLargeImage

BOOL IsLargeImage() const;

返回值

备注

CMFCRibbonButton::IsMenuAreaHighlighted

virtual BOOL IsMenuAreaHighlighted() const;

返回值

备注

CMFCRibbonButton::IsMenuOnBottom

BOOL IsMenuOnBottom() const;

返回值

注解

CMFCRibbonButton::IsPopupDefaultMenuLook

virtual BOOL IsPopupDefaultMenuLook() const;

返回值

备注

CMFCRibbonButton::IsRightAlignMenu

指定菜单是否右对齐。

BOOL IsRightAlignMenu() const;

返回值

如果菜单右对齐,则为 TRUE;否则为 FALSE。

CMFCRibbonButton::IsSingleLineText

BOOL IsSingleLineText() const;

返回值

备注

CMFCRibbonButton::OnCalcTextSize

virtual void OnCalcTextSize(CDC* pDC);

参数

[in] pDC

备注

CMFCRibbonButton::OnClick

当用户单击按钮时,由框架调用。

virtual void OnClick(CPoint point);

参数

point
[in] 指定鼠标单击的位置。

注解

如果要处理此事件,请在派生类中重写此方法。

CMFCRibbonButton::OnDraw

virtual void OnDraw(CDC* pDC);

参数

[in] pDC

备注

CMFCRibbonButton::OnDrawBorder

virtual void OnDrawBorder(CDC* pDC);

参数

[in] pDC

备注

CMFCRibbonButton::OnFillBackground

virtual COLORREF OnFillBackground(CDC* pDC);

参数

[in] pDC

返回值

备注

CMFCRibbonButton::RemoveAllSubItems

从弹出菜单中删除所有菜单项。

void RemoveAllSubItems();

CMFCRibbonButton::RemoveSubItem

从弹出菜单中删除一个菜单项。

BOOL RemoveSubItem(int nIndex);

参数

nIndex
[in] 指定要删除的菜单项的从零开始的索引。

返回值

如果已成功删除指定的项,则为 TRUE;否则,如果 nIndex 为负数或超过弹出菜单中的菜单项数,则为 FALSE

CMFCRibbonButton::SetACCData

设置功能区按钮的辅助功能数据。

virtual BOOL SetACCData(
    CWnd* pParent,
    CAccessibilityData& data);

参数

pParent
功能区元素的父窗口。

data
功能区元素的可访问性数据。

返回值

如果成功,则返回 TRUE;否则返回 FALSE。

备注

CMFCRibbonButton::SetAlwaysLargeImage

指定当用户折叠按钮时,按钮显示大图像还是小图像。

void SetAlwaysLargeImage(BOOL bSet=TRUE);

参数

bSet
[in] 如果为 TRUE,则按钮显示大图像。 否则,按钮显示小图像。

CMFCRibbonButton::SetDefaultCommand

启用功能区按钮的默认命令。

void SetDefaultCommand(BOOL bSet=TRUE);

参数

bSet
[in] 如果为 TRUE,则按钮可以执行其默认命令。 如果为 FALSE,则按钮无法执行其默认命令。

备注

bSet 仅在按钮具有菜单时才相关。 如果 bSet 为 TRUE,则按钮可以执行其默认命令,并且仅当用户单击按钮右边缘的箭头时,才会显示分配的弹出菜单。 否则,该按钮无法执行其默认命令,并且无论用户单击按钮的哪个区域,都会显示弹出菜单。

CMFCRibbonButton::SetDescription

virtual void SetDescription(LPCTSTR lpszText);

参数

[in] lpszText

备注

CMFCRibbonButton::SetImageIndex

将索引分配给按钮的图像。

void SetImageIndex(
    int nIndex,
    BOOL bLargeImage);

参数

nIndex
[in] 指定图像索引。

bLargeImage
[in] 如果为 TRUE,则指定的索引引用大图像列表。 否则,索引引用小图像列表。

CMFCRibbonButton::SetMenu

将弹出菜单分配给功能区按钮。

void SetMenu(
    HMENU hMenu,
    BOOL bIsDefaultCommand=FALSE,
    BOOL bRightAlign=FALSE);

void SetMenu(
    UINT uiMenuResID,
    BOOL bIsDefaultCommand=FALSE,
    BOOL bRightAlign=FALSE);

参数

hMenu
Windows 菜单的句柄。

bIsDefaultCommand
如果为 TRUE,则按钮可以执行其默认命令;否则,按钮将显示一个弹出菜单。

bRightAlign
如果为 TRUE,则菜单右对齐。 否则,菜单左对齐。

uiMenuResID
菜单资源 ID。

备注

当应用程序将菜单分配给按钮时,按钮的右侧会显示一个箭头。 如果 bIsDefaultCommand 为 TRUE,则仅在用户单击箭头时,才会显示菜单。 如果用户单击该按钮,则会执行其默认命令。 如果 bIsDefaultCommand 为 FALSE,则单击按钮上的任意位置均可显示菜单

CMFCRibbonButton::SetParentCategory

virtual void SetParentCategory(CMFCRibbonCategory* pParent);

参数

[in] pParent

备注

CMFCRibbonButton::SetRightAlignMenu

将弹出菜单与按钮边缘对齐。

void SetRightAlignMenu(BOOL bSet=TRUE);

参数

bSet
[in] 如果为 TRUE,则菜单右对齐。 否则,菜单左对齐

CMFCRibbonButton::SetText

virtual void SetText(LPCTSTR lpszText);

参数

[in] lpszText

备注

另请参阅

层次结构图