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类型
Visual C++ 对话框增加菜单栏的更多相关文章
- java在线聊天项目 swt可视化窗口Design 重新设计好友列表窗口 增加菜单栏
增加的菜单栏效果图如下: eclipse 中调整到 swt的design视图下 控件区域选择Menu Controls 将Menu Bar拖动到窗口标题栏 将Cascaded Menu拖动到Menu ...
- Visual Stdio 2017增加SVN支持
实验目的 当前公司项目源码文档等内容都保存在svn上,现在是用着小乌龟在文件浏览状态中去检出和提交等操作,没有集成到vs2017中来,比较麻烦.现在要把vs2017增加svn支持,希望可以直接在IDE ...
- 自定义Microsoft Visual Studio 代码模板,增加公司和个人信息
C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\ItemTemplates\CSharp目录里面有各种新建模板分类: 修 ...
- jQuery查找标签--选择器,筛选器,模态对话框, 左侧菜单栏
查找标签 选择器: 基本选择器(同css) id选择器 $("#id") 标签选择器 $('tagName') class选择器 $(".className") ...
- 微软Visual Studio "14" CTP 2 发布
微软Visual Studio "14" CTP 2 发布 对于在微软阵营下进行工作的团队来说,拥有最新版本的Visual Studio是提高效率最佳的选择,没有之一. 在本文中, ...
- Visual Studio 2015 和 Apache Cordova 跨平台开发入门(一)
基于 Windows 10 的 Visual Studio 2015 跨平台的应用开发主要分为基于Visual Studio 安装 Xamarin 扩展的跨Android.iOS 和 Windows的 ...
- 如何使用Visual Studio 2013 创建Azure云应用
创建 Azure 云服务 Azure 云服务包括执行应用程序所需操作的角色.当你将云服务发布到 Azure 时,每个角色将在云中的虚拟机上运行.有关如何开发 Azure 云服务的详细信息. 创建 Az ...
- MFC 对话框不显示,返回-1 原因
DoModal失败原因 1.MFC 通常对话框不显示的原因有 1 父窗口HWND无效 2 在ONINITDIALOG里用了ENDDIALOG 3 无效的对话框资源ID 4 使用没有注册的的自定义控件 ...
- Visual Studio 2015 和 Apache Cordova 跨平台开发入门
原文:Visual Studio 2015 和 Apache Cordova 跨平台开发入门(一) 基于 Windows 10 的 Visual Studio 2015 跨平台的应用开发主要分为基于V ...
随机推荐
- iOS开发——总结篇&IOS开发基础知识
IOS开发基础知识 1:Objective-C语法之动态类型(isKindOfClass, isMemberOfClass,id) 对象在运行时获取其类型的能力称为内省.内省可以有多种方法实现. 判断 ...
- sphinx全文检索之PHP使用(转)
基础 数据结构: CREATE TABLE email ( emailid mediumint(8) unsigned NOT NULL auto_increment COMMENT '邮件id', ...
- android studio的里的 content_XXX_xml问题
遇到这个问题就是androidStudio的版本问题,androidStudio会出现这个问题是在androidStudio1.4以上版本当遇到这个问题的时候建Activity的时候选择EmptyAc ...
- C#基础篇--文件(流)
1:Path类是专门用来操作文件路径的(Path类是静态类):当然用字符串的处理办法也能实现. string str = @"C:\Users\成才\Desktop\Hashtable.t ...
- MySql安装步骤详解,MySql的root密码设置,启动MySql服务。
1.下载mysql安装包,并解压,双击mysql-5.6.24-winx64.msi 2.点击下一步 3.选择custom 4.选择安装内容和位置,5个安装内容要选择will be installed ...
- CentOS7 发布 ASP.NET MVC 4 --- mono 4.6.0 + jexus 5.8.1
yum -y install gcc gcc-c++ yum -y install bison pkgconfig glib2-devel gettext make libpng-devel libj ...
- 对springMVC的简单理解
spring框架以及MVC思想: 一:spring框架:spring框架是一种很优秀的框架,它可以帮助开发人员简化组件与组件之间耦合,管理对象.1:创建对象和管理对象之间的关系,可以在配置文件通过be ...
- PHP之数组遍历
数组在PHP中是一个非常强大的武器,用起来方便.容易,由于使用起来异常灵活,用它就可以实现数据结构中的链表.栈.队列.堆以及所谓的字典.集合等,也可以转换成XML格式. 1.使用for for语句遍历 ...
- OC4_可变数组
// // main.m // OC4_可变数组 // // Created by zhangxueming on 15/6/11. // Copyright (c) 2015年 zhangxuemi ...
- Oracle PL/SQL 事物处理 银行转账
Oracle数据库中的事务处理:添加,修改,删除时需要使用事务处理(显示事务). 1.事务的分类显示事务(添加,修改,删除)和隐式事务(除了添加,修改,删除). 2.事务的执行方式:自动提交(jdbc ...