WTL 按钮菜单类






4.76/5 (7投票s)
2002年11月6日

87711

2173
为您的 WTL 应用程序添加一个单击时显示菜单的按钮。
引言
一个基于CButton的小类,当点击时会显示一个弹出菜单。易于使用,非常适合基于对话框的应用程序。
使用CButtonMenu
要在WTL对话框中使用此类,首先在MainDlg.h
文件中包含头文件
#include "buttonmenu.h"
接下来,将CButtonMenu对象添加到类中
CButtonMenu m_wndButtonMenu;
接下来(这很重要),将REFLECT_NOTIFICATIONS()
调用添加到对话框的消息映射中(否则按钮将无法接收BN_CLICKED
通知消息)
BEGIN_MSG_MAP(CMainDlg) ... REFLECT_NOTIFICATIONS() END_MSG_MAP()
现在子类化一个现有的按钮控件,并在对话框的OnInitDialog
函数中设置要显示的弹出菜单
// Create button menu m_wndButtonMenu.SubclassWindow(GetDlgItem(IDC_BUTTON1)); // Set the menu ID that the button displays m_wndButtonMenu.SetMenu(IDR_POPUP);
最后,添加必要的COMMAND_ID_HANDLERs
来处理弹出菜单命令。
完成了!按钮将显示一个箭头(如果可用,则使用Marlett字体),并在点击时显示一个弹出菜单。
注释
在设计使用此类的对话框时,不要使用普通的按钮控件,而是使用设置了“类似按钮”风格位的复选框控件。使用复选框的优点是,在显示弹出菜单时,按钮将保持按下状态(有关更多详细信息,请参阅示例项目)