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. [WebGL入门]二,開始WebGL之前,先了解一下canvas

    年2月)HTML5依旧处于草案阶段. HTML5支持网页端的多媒体功能和画布功能,追加了非常多全新的更合理的Tag标签.各个浏览器也都在逐渐的完好这些新的特性. Canvas对象表示一个 HTML画布 ...

  2. Object.defineProperty vs __defineGetter__ vs normal

    Testing in Chrome 31.0.1650.63 32-bit on Windows Server 2008 R2 / 7 64-bit Test Ops/sec Object.defin ...

  3. WebStorm 6.0下运行pomelo项目

    最近想使用WebStorm来写pomelo,初次使用WebStorm,网上找了老半天根本没有介绍WebStorm如何创建或者打开运行pomelo的教程,网易pomelo官网介绍的使用 WebStorm ...

  4. 学习笔记之Linux开发(C语言)

    第二章 Linux下C程序开发环境 vi编辑器 gcc 第三章 Linux基础 Kernel Shell 第三章 Linux技术实验 ls -l 以长格式的形式查看当前目录下所有可见文件的详细属性. ...

  5. ASP.NET 相同页面前后端之间传值

    aspx页面前后端之间传值:前端的html或js获得后端的cs,后端的cs获得前端的js值. 一.前端获得后端的值 1.html元素 前端: <td><%=str%></ ...

  6. ListView滑动不爽,滚动一页得滑几次?该用分页列表啦!

    ListView等滚动位置经常不符合用户期望: 很多时候都是看完一页想滑到下一页,但滑动一次距离往往不是不够就是超过,很难控制. PagedListView工程中提供了PageScroller来解决这 ...

  7. java.lang.SecurityException: Permission denied (missing INTERNET permission?) 解决

    Android app里试图用HttpUrlConnection获取网络连接,忘记在AndroidManifest清单文件里声明需要用到Internet的权限,运行时报此错误. 解决方法 在Andro ...

  8. innodb对update的处理

    当更新非聚集索引上记录 和 聚集索引上的主键时,是标记删除,然后插入新的记录 当更新聚集索引上的非主键列时,是updated-in-place,也就是说原地修改,不会插入新记录. 之前一直以为都是以标 ...

  9. Java内存溢出示例

    按照java内存的结构,发生内存溢出的地方常在于堆.栈.方法区.直接内存. 一.堆溢出 堆溢出原因莫过于对象太多导致,看代码: /** * java 堆溢出 * VM Args:-Xms20m -Xm ...

  10. 用jsp方式通知客户端下载文件

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...