【MFC】MFCMenuButton 的用法
背景:因为对话框界面上的空间有限,为了节省空间,我决定采用一个MFCMenuButton用来实现同一类按钮事件。本来我打算设置两个按钮:“单个删除文件”和“清空所有文件”两个按钮,但是空间太小,而且这两个按钮的功能相似,所以,我干脆将这两个按钮组合成为一个按钮,采用下拉菜单选择的方式分别触发按钮事件。
首先,需要创建一个菜单资源。如果资源视图中没有Menu文件夹,则需要在资源视图窗口右击后缀为.rc的文件夹,选择添加资源,弹出对话框。


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

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


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

首选,需要新建一个MFCMenuButton的控件,然后添加关联变量,假设为m_MenuButton1。
在对话框的OnInitDialog()函数中插入下面的代码,载入菜单资源。
CMenu* pMenu = new CMenu;
pMenu->LoadMenu(IDR_MENU1); //载入菜单资源
m_MenuButton1.m_hMenu = pMenu->GetSubMenu()->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 的用法的更多相关文章
- 【转】MFC下拉列表框的用法
原文网址:http://blog.csdn.net/kinglimy/article/details/6452239 Combo Box (组合框)控件很简单,可以节省空间.从用户角度来看,这个控件是 ...
- MFC之MessageBox用法
一 函数原型及参数 function MessageBox(hWnd: HWND; Text, Caption: PChar; Type: Word): Integer; hWnd:对话框父窗口 ...
- MFC CSplitterWnd的用法
用MFC开发一个软件界面中需要拆分多个试图窗口时,使用CSplitterWnd类 CSplitterWnd类主要用在创建一个拆分试图窗口.通常嵌入在框架窗口中(CMainFrame) 创建步骤: 1 ...
- MFC 控件用法
1:IP Control 变量CIPAddressCtrl m_iAddr 关联DDX_Control(pDX,IDC_IPADDRESS1,m_iAddr); 设置地址:m_iAddr.SetAdd ...
- MFC中CFileDialog用法
用CFileDialog选择了一个文件后,使用FILE::fopen打开文件错误,使用 的是相对地址,和王工调试了半天,怎么跟踪也没发现错误,原来如此......... CFileDialog文件选择 ...
- MFC 的SetWindowPos 用法
转自于:http://hi.baidu.com/max_new/blog/item/e2bbe607b1f127c57b8947c0.html 许多软件,特别是占桌面面积不是很大的软件,通常都提供了一 ...
- MFC的定时器OnTimer
本文总结来源出自鸡啄米,感谢鸡啄米.来源:http://www.jizhuomi.com/software/232.html 定时器简介 定时器,可以帮助开发者或者用户定时完成某项任务.在使用定时器时 ...
- MFC ListControl使用方法
在原来博客中有:MF CListControl 简单功能使用 推荐文章:MFC类CtrlList用法 今天又又一次来介绍点新东西:双击击listcontrol 做出响应.当然你能够做的还有非常多,比 ...
- VS2010/MFC编程入门之四十四(MFC常用类:定时器Timer)
前面一节鸡啄米讲了CTime类和CTimeSpan类的使用,本节继续讲与时间有关的定时器.定时器并不是一个类,主要考虑到,提起时间的话就不能不说定时器,所以就把它放到CTime和CTimeSpan之后 ...
随机推荐
- Linux kernel分析前的准备
分析工具 “欲善其事,先利其器”.Linux内核的代码量非常大,如果没有一个好的察看分析工具,那将是一件非常繁琐的事情. Vim+cscope cscope,如果你知道ctags,那么它是一个比cta ...
- 23. CTF综合靶机渗透(十六)
靶机说明: VM Name: JIS-CTF : VulnUpload Difficulty: Beginner Description: There are five flags on this m ...
- HTMLParser使用详解(2)- Node内容
HTMLParser使用详解(2)- Node内容 2010-03-18 13:41 HTMLParser将解析过的信息留存为一个树的结构.Node是信息留存的数据类型基础.请看Node的界说:pu ...
- cargo实现自动化部署远程jetty容器(非安全模式)
cargo实现自动化部署应用至远程jetty容器 (非安全模式) 一.准备: WAR包:Deployer Web application for the Jetty remote containers ...
- Sharepoint2013商务智能学习笔记之使用Current User Filter筛选Excel 数据(六)
Sharepoint自带的filter可以和Excel Web Access互动,下面将制作一个Demo,使用Current User Filter根据当前登录用户自动筛选Excel. 第一步,用Ex ...
- js注册
ScriptManager.RegisterStartupScript(this, GetType(), "", "alert('修改失败!')", true) ...
- Webpack 4教程 - 第八部分 使用prefetch和preload进行动态加载
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者.原文出处:https://wanago.io/2018/08/13/webpack-4-course-part ...
- Python中配置文件解析模块-ConfigParser
Python中有ConfigParser类,可以很方便的从配置文件中读取数据(如DB的配置,路径的配置).配置文件的格式是: []包含的叫section, section 下有option=value ...
- JavaScript -- 常用的日期对象和数学对象
创建一个时间对象 var time=new Date(); //当前时间,()内可写入字符串 ,如'2017-10-10',可转为响应的时间 常用方法 time.getFullYear(); //从 ...
- 清北刷题冲刺 10-28 a.m
立方数 (cubic) Time Limit:1000ms Memory Limit:128MB 题目描述 LYK定义了一个数叫“立方数”,若一个数可以被写作是一个正整数的3次方,则这个数就是立方 ...