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++ 对话框增加菜单栏的更多相关文章

  1. java在线聊天项目 swt可视化窗口Design 重新设计好友列表窗口 增加菜单栏

    增加的菜单栏效果图如下: eclipse 中调整到 swt的design视图下 控件区域选择Menu Controls 将Menu Bar拖动到窗口标题栏 将Cascaded Menu拖动到Menu ...

  2. Visual Stdio 2017增加SVN支持

    实验目的 当前公司项目源码文档等内容都保存在svn上,现在是用着小乌龟在文件浏览状态中去检出和提交等操作,没有集成到vs2017中来,比较麻烦.现在要把vs2017增加svn支持,希望可以直接在IDE ...

  3. 自定义Microsoft Visual Studio 代码模板,增加公司和个人信息

    C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\ItemTemplates\CSharp目录里面有各种新建模板分类: 修 ...

  4. jQuery查找标签--选择器,筛选器,模态对话框, 左侧菜单栏

    查找标签 选择器: 基本选择器(同css) id选择器 $("#id") 标签选择器 $('tagName') class选择器 $(".className") ...

  5. 微软Visual Studio "14" CTP 2 发布

    微软Visual Studio "14" CTP 2 发布 对于在微软阵营下进行工作的团队来说,拥有最新版本的Visual Studio是提高效率最佳的选择,没有之一. 在本文中, ...

  6. Visual Studio 2015 和 Apache Cordova 跨平台开发入门(一)

    基于 Windows 10 的 Visual Studio 2015 跨平台的应用开发主要分为基于Visual Studio 安装 Xamarin 扩展的跨Android.iOS 和 Windows的 ...

  7. 如何使用Visual Studio 2013 创建Azure云应用

    创建 Azure 云服务 Azure 云服务包括执行应用程序所需操作的角色.当你将云服务发布到 Azure 时,每个角色将在云中的虚拟机上运行.有关如何开发 Azure 云服务的详细信息. 创建 Az ...

  8. MFC 对话框不显示,返回-1 原因

    DoModal失败原因 1.MFC 通常对话框不显示的原因有 1 父窗口HWND无效 2 在ONINITDIALOG里用了ENDDIALOG 3 无效的对话框资源ID 4 使用没有注册的的自定义控件 ...

  9. Visual Studio 2015 和 Apache Cordova 跨平台开发入门

    原文:Visual Studio 2015 和 Apache Cordova 跨平台开发入门(一) 基于 Windows 10 的 Visual Studio 2015 跨平台的应用开发主要分为基于V ...

随机推荐

  1. iOS开发——网络编程OC篇&Socket编程

    Socket编程 一.网络各个协议:TCP/IP.SOCKET.HTTP等 网络七层由下往上分别为物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 其中物理层.数据链路层和网络层通常被称作 ...

  2. android学习日记10--裁剪区域

    裁剪区域 裁剪是画布的一个函数,区域可以是矩形和圆形,也可以通过设置 path 或Region来显示自定义区域,通过不同组合,Android几乎可以支持任意现状的裁剪区域.android.graphi ...

  3. 已超过了锁请求超时时段。 (Microsoft SQL Server,错误: 1222)

    操作SQLServer数据库时.遇到这种问题:已超过了锁请求超时时段. (Microsoft SQL Server,错误: 1222) 经过查找材料了解为资源抢占,照成死锁,杀死进程就OK了.详细操作 ...

  4. img图片下有个间隙是为什么

    转自知乎:http://www.zhihu.com/question/21558138要理解这个问题,首先要弄明白CSS对于 display: inline 元素的 vertical-align 各个 ...

  5. 第十一章 Function类型

    在ECMAScript中,Function(函数)类型实际上是对象.每个函数也是Function类型的实例,而且都与其它引用类型一样具有属性和方法.由于是函数对象,因此函数名实际上也是一个指向函数对象 ...

  6. 关于"干货集中营"的一个开源App

    中秋佳节,玩了一天,撸了两天代码,搞出这么个东东,共享出来,小伙伴们如果有兴趣,欢迎添砖加瓦. 数据接口为干货集中营的数据,接口地址:http://gank.io/api 使用到的技术清单如下: 1. ...

  7. Arcengine10下载地址

    ed2k://|file|%5BArcGIS.Engine.Developer.kit.10.%E8%8B%B1%E6%96%87%E7%89%88%5D.ArcGIS.Engine.Develope ...

  8. java基础学习总结二(标识符、字符集、数据类型以及类型转换)

    一:标识符 1:标识符可以由字母.数字.下划线_.$符等组成2:标识符的首字母只能是字母.数字.下划线3:标识符不能使用关键字或者保留字4:标识符可以是中文,但是不建议使用中文5:标识符可以任意长,没 ...

  9. [转]如何解决:Android中 Error generating final archive: Debug Certificate expired on 10/09/18 16:30 的错误

    本文转自:http://www.cnblogs.com/yyangblog/archive/2011/01/07/1929657.html 问题概述: 在导入一个app后提示如下错误: “Error ...

  10. PV模型

    你想建设一个能承受500万PV/每天的网站吗? 500万PV是什么概念?服务器每秒要处理多少个请求才能应对?如果计算呢? 一.PV是什么 PV是page view的简写.PV是指页面的访问次数,每打开 ...