首页 > 代码库 > 【MFC】MFCMenuButton 的用法

【MFC】MFCMenuButton 的用法

 

背景:因为对话框界面上的空间有限,为了节省空间,我决定采用一个MFCMenuButton用来实现同一类按钮事件。本来我打算设置两个按钮:“单个删除文件”和“清空所有文件”两个按钮,但是空间太小,而且这两个按钮的功能相似,所以,我干脆将这两个按钮组合成为一个按钮,采用下拉菜单选择的方式分别触发按钮事件。

首先,需要创建一个菜单资源。如果资源视图中没有Menu文件夹,则需要在资源视图窗口右击后缀为.rc的文件夹,选择添加资源,弹出对话框。

技术分享

技术分享

在弹出的对话框中选择Menu,之后点击新建按钮。在新建的Menu上面设置下拉菜单每个选项的名字。

技术分享

分别设置两个选项的ID如下所示。

技术分享

技术分享

 

好了,现在这个名字叫做"IDR_MENU1"的菜单就编辑好了,下面在MFCMenuButton中调用该菜单资源即可。

技术分享

首选,需要新建一个MFCMenuButton的控件,然后添加关联变量,假设为m_MenuButton1。

 在对话框的OnInitDialog()函数中插入下面的代码,载入菜单资源。

1 CMenu* pMenu = new CMenu;
2 pMenu->LoadMenu(IDR_MENU1); //载入菜单资源
3 m_MenuButton1.m_hMenu = pMenu->GetSubMenu(0)->GetSafeHmenu();

 在按钮事件中插入下面的代码进行测试。

void CTABPAGE2::OnBnClickedMfcmenubuttonDelete1()
{
    // TODO: 在此添加控件通知处理程序代码
    if(m_MenuButton1.m_nMenuResult == ID_X_Single)
    {
        AfxMessageBox(_T("单个删除文件!"));
    }
    else if(m_MenuButton1.m_nMenuResult == ID_X_All)
    {
        AfxMessageBox(_T("删除全部文件"));
    }
     
    return;
}

弹出对话框的部分替换成为功能语句即可分别完成不同的功能。

 

【MFC】MFCMenuButton 的用法