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::SizeToContent
。 CMFCMenuButton::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;
继承层次结构
要求
标头: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 像素的预定义边距。