65.9K
CodeProject 正在变化。 阅读更多。
Home

WTL 按钮菜单类

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.76/5 (7投票s)

2002年11月6日

viewsIcon

87711

downloadIcon

2173

为您的 WTL 应用程序添加一个单击时显示菜单的按钮。

Sample Image - WTLButtonMenu.jpg

引言

一个基于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字体),并在点击时显示一个弹出菜单。

注释

在设计使用此类的对话框时,不要使用普通的按钮控件,而是使用设置了“类似按钮”风格位的复选框控件。使用复选框的优点是,在显示弹出菜单时,按钮将保持按下状态(有关更多详细信息,请参阅示例项目)

© . All rights reserved.