CMFCMenuButton 类

在用户菜单选项上显示弹出菜单和报表的按钮。

语法

class CMFCMenuButton : public CMFCButton

成员

公共构造函数

名称 描述
CMFCMenuButton::CMFCMenuButton 构造 CMFCMenuButton 对象。

公共方法

名称 描述
CMFCMenuButton::PreTranslateMessage 由框架调用以在调度窗口消息之前翻译窗口消息。 (替代 CMFCButton::PreTranslateMessage。)
CMFCMenuButton::SizeToContent 根据按钮的文本和图像大小更改按钮的大小。

数据成员

名称 描述
CMFCMenuButton::m_bOSMenu 指定是显示默认系统弹出菜单还是使用 CContextMenuManager::TrackPopupMenu
CMFCMenuButton::m_bRightArrow 指定弹出菜单显示在按钮的下方还是右侧。
CMFCMenuButton::m_bStayPressed 指定用户释放按钮后菜单按钮是否更改其状态。
CMFCMenuButton::m_hMenu 附加的 Windows 菜单的句柄。
CMFCMenuButton::m_nMenuResult 一个标识符,指示用户从弹出菜单中选择的项。
CMFCMenuButton::m_bDefaultClick 允许默认处理(针对按钮文本/图像)。

备注

CMFCMenuButton 类派生自 CMFCButton 类,而 CMFCButton 类又派生自 CButton 类。 因此,可以通过与使用 CButton 相同的方式在代码中使用 CMFCMenuButton

创建 CMFCMenuButton ,必须传入关联的弹出菜单的句柄。 接下来,调用函数 CMFCMenuButton::SizeToContentCMFCMenuButton::SizeToContent 检查按钮大小是否足以包含指向弹出窗口显示位置(即按钮的下方或右侧)的箭头。

示例

下面的示例演示如何设置按钮附加菜单的句柄、根据按钮的文本和图像大小调整按钮的大小,以及设置框架显示的弹出菜单。 此代码片段是新控件示例的一部分。

CMFCMenuButton m_btnMenu;
// CMenu m_menu
m_btnMenu.m_hMenu = m_menu.GetSubMenu(0)->GetSafeHmenu();
m_btnMenu.SizeToContent();
// set to FALSE so that the framework calls CContextMenuManager::TrackPopupMenu
// to display its menu
m_btnMenu.m_bOSMenu = FALSE;

继承层次结构

CObject

CCmdTarget

CWnd

CButton

CMFCButton

CMFCMenuButton

要求

标头:afxmenubutton.h

CMFCMenuButton::CMFCMenuButton

构造新的 CMFCMenuButton 对象。

CMFCMenuButton();

CMFCMenuButton::m_bOSMenu

一个布尔成员变量,指示框架显示的弹出菜单。

BOOL m_bOSMenu;

注解

如果 m_bOSMenu 为 TRUE,框架将调用此对象的继承 TrackPopupMenu 方法。 否则,框架调用 CContextMenuManager::TrackPopupMenu

CMFCMenuButton::m_bRightArrow

一个布尔成员变量,指示弹出菜单的位置。

BOOL m_bRightArrow;

备注

当用户按下菜单按钮时,应用程序会显示一个弹出菜单。 框架将在按钮下方或按钮右侧显示弹出菜单。 该按钮还有一个小箭头,用于指示弹出菜单的显示位置。 如果 m_bRightArrow 为 TRUE,框架将在按钮右侧显示弹出菜单。 否则,它会在按钮下方显示弹出菜单。

CMFCMenuButton::m_bStayPressed

一个布尔成员变量,指示在用户从弹出菜单中做出选择时是否按下菜单按钮。

BOOL m_bStayPressed;

备注

如果 m_bStayPressed 成员为 FALSE,则用户单击按钮时,不会按下菜单按钮。 在这种情况下,框架仅显示弹出菜单。

如果 m_bStayPressed 成员为 TRUE,则当用户单击按钮时,菜单按钮将按下。 该按钮将保持按下状态,直到用户通过做出选择或取消来关闭弹出按钮。

CMFCMenuButton::m_hMenu

附加菜单的句柄。

HMENU m_hMenu;

备注

当用户单击菜单按钮时,框架将显示此成员变量指示的菜单。

CMFCMenuButton::m_nMenuResult

一个整数,指示用户从弹出菜单中选择的项。

int m_nMenuResult;

注解

如果用户取消菜单而不进行选择,或者发生错误,则此成员变量的值为零。

CMFCMenuButton::m_bDefaultClick

允许对按钮上的文本或图像进行默认处理。

BOOL  m_bDefaultClick;

备注

将 m_bDefaultClick 设置为 false 会导致按钮在用户单击按钮上的任意位置时显示菜单。

CMFCMenuButton::PreTranslateMessage

由框架调用以在调度窗口消息之前翻译窗口消息。

virtual BOOL PreTranslateMessage(MSG* pMsg);

参数

pMsg
[in] 指向包含要处理的消息的 MSG 结构。

返回值

如果消息已翻译且不应调度,则为非零;如果消息未翻译且应调度,则为 0。

备注

CMFCMenuButton::SizeToContent

根据按钮的文本大小和图像大小更改按钮的大小

virtual CSize SizeToContent(BOOL bCalcOnly = FALSE);

参数

bCalcOnly
[in] 一个布尔参数,指示此方法是否调整按钮的大小。

返回值

一个 CSize 对象,指定按钮的新大小。

备注

如果调用此函数且 bCalcOnly 为 TRUE,SizeToContent 将仅计算按钮的新大小

系统将计算按钮的新大小,以适应按钮文本、图像和箭头。 框架还将向水平边缘和垂直边缘各添加 10 像素和 5 像素的预定义边距。

另请参阅

层次结构图

CMFCButton 类