背景:因为对话框界面上的空间有限,为了节省空间,我决定采用一个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;
}

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

最新文章

  1. 常用python机器学习库总结
  2. js仿微信语音播放
  3. sublime Text 的安装、破解、汉化、使用
  4. canvas应用-思维导图
  5. 玩SSH,SFTP
  6. axure制作圆形组件——axure制作技巧
  7. check_partition_aft_merge.sql
  8. pyspark 内容介绍(一)
  9. Android系统--输入系统(九)Reader线程_核心类及配置文件
  10. 盒子端 CSS 动画性能提升研究
  11. DC 辅域转主域
  12. redis客户端可以连接集群,但JedisCluster连接redis集群一直报Could not get a resource from the pool
  13. Manjaro (KDE)安装踩坑记录
  14. Tensorflow datasets.shuffle repeat batch方法
  15. .NetCore中EFCore的使用整理(二)-关联表查询
  16. (原)Android在子线程用handler发送的消息,主线程是怎么loop到的?
  17. request.POST 和 request.GET
  18. Hive错误:Permission denied: user=anonymous, access=EXECUTE, inode=”/tmp”
  19. Apache服务器下phalcon项目报Mod-Rewrite is not enabled问题
  20. C#字符串加密解密

热门文章

  1. 让开发更简单 —— Coding Enterprise 发布
  2. jqGrid 跨页选择以及回显的处理
  3. Vue 全家桶单元测试简要指南
  4. 边界提取_MATLAB
  5. Educational Codeforces Round 52E(构造,快速幂)
  6. Codeforces#514D(三分,简单二维几何)
  7. [Xcode 实际操作]四、常用控件-(5)UILabel文本标签自定义文字样式
  8. mac 终端命令kill掉某个指定端口
  9. 关于json_encode和json_decode
  10. Java基础笔记(十六)——继承