Visual C++ 对话框增加菜单栏
1、添加菜单资源
在resourceview视图中右击选择insert,添加一个菜单资源IDR_MENU1,同时设定好响应的菜单项,例
如:
菜单1 菜单2
子菜单1(ID_MENUITEM1) 子菜单3(ID_MENUITEM3)
子菜单2(ID_MENUITEM2) 子菜单4(ID_MENUITEM4)
2、在对话框中添加该菜单,先增成员变量HMENU m_hMenu1; 然后在初始化函数OnInitDialog()添加一下代码:
m_hMenu1=LoadMenu(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MENU1));//导入资源,创建菜单
::SetMenu(this->GetSafeHwnd(),m_hMenu1);//添加到对话框
3、添加子菜单响应函数
点击菜单View-->ClassWizard,在message map选项卡中选择我们要响应的菜单ID_MENUITEM1,然后选
择COMMAND消息,双击添加到member functions中,提示命名,命名后在member functions双击该函数,
编写响应动作
4、注销资源
在对话框的OnDestroy函数中添加一下代码:
DestroyMenu(m_hMenu1);
5、关于禁用菜单或者子菜单
子菜单
CMenu * pMenu;
CMenu * pSubMenu;
pMenu=CMenu::FromHandle(m_hMenu1);//获得菜单栏的指针
pSubMenu=pMenu->GetSubMenu(1); //1表示从0开始的主菜单序号
pSubMenu->EnableMenuItem(ID_MENUITEM3,MF_GRAYED);//禁用
//ID_MENUITEM3表示子菜单的ID号,MF_GRAYED表示禁用并且为灰色
pSubMenu->EnableMenuItem(ID_MENUITEM3,MF_ENABLED);//启用
主菜单
CMenu * pMenu;
pMenu=CMenu::FromHandle(m_hMenu1);//获得菜单栏的指针
pMenu->EnableMenuItem(1,MF_BYPOSITION |MF_GRAYED);//禁用
//MF_BYPOSITION表示按序列查,从0开始,因为主菜单为popup类型,没有ID编号,只能用这中方式
pMenu->EnableMenuItem(1,MF_ENABLED);//启用
主菜单下的popup联级菜单(其实类似主菜单)
CMenu * pMenu;
CMenu * pSubMenu;
pMenu=CMenu::FromHandle(m_hMenu1);//获得菜单栏的指针
pSubMenu=pMenu->GetSubMenu(0);//获得主菜单序号
pSubMenu->EnableMenuItem(1,MF_BYPOSITION |MF_GRAYED);//禁用
//MF_BYPOSITION表示该主菜单下的第一个菜单,该菜单没有ID号,为popup类型
最新文章
- python __globals__, __file__
- Nhibernate 4.0 教程入门
- JavaScript的三种工业化调试方法
- mysql权限管理
- ebox学习之SD & fat 配置
- Arduino 极速入门系列–1 点亮 LED
- 《开源大数据分析引擎Impala实战》目录
- 5天玩转C#并行和多线程编程 —— 第一天 认识Parallel
- python jar
- 使用MediaRecorder录制视频短片
- 在windows下用eclipse + pydev插件来配置python的开发环境
- 【2013杭州区域赛】部分题解 hdu4770—4780
- uva 714 Copying Books(二分法求最大值最小化)
- hdoj 1269 迷宫城堡(强连通分量)
- MySQL Full Join的实现
- jQuery的each函数
- iOS坐标转换失败?UIKit的屠神坑
- SpringtMVC中配置 <;mvc:annotation-driven/>; 与 <;mvc:default-servlet-handler/>; 源码解析
- C++版-剑指offer 面试题6:重建二叉树(Leetcode105. Construct Binary Tree from Preorder and Inorder Traversal) 解题报告
- DRF之项目搭建