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++ 对话框增加菜单栏,布布扣,bubuko.com

时间: 2024-11-05 18:44:41

Visual C++ 对话框增加菜单栏的相关文章

给框架增加菜单栏,工具栏

这段代码运行正常了但是有一个警告:大意是说要用AddTool()替换掉AddSimpleTool 试过多次都出错了,有没有人知道啊? import wx #import images import wx.py.images as images class ToolbarFrames(wx.Frame): def __init__(self,parent,id): wx.Frame.__init__(self,parent,id,"我的程序",size=(300,200)) panel

微软Visual Studio "14" CTP 2 发布

对于在微软阵营下进行工作的团队来说,拥有最新版本的Visual Studio是提高效率最佳的选择,没有之一. 在本文中,我们就上个月发布的Visual Studio "14" CTP1和昨天发布的Visual Studio "14" CTP2进行详细发布说明梳理,供大家餐食: (一) Visual Studio "14" CTP 2版本: 微软于2014年7月8日发布了Visual Studio 14 (新Visual Studio版本的代号)的

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

基于 Windows 10 的 Visual Studio 2015 跨平台的应用开发主要分为基于Visual Studio 安装 Xamarin 扩展的跨Android.iOS 和 Windows的应用开发,基于Apache Cordova 的 Visual Studio 工具开发跨Windows.Android 和 iOS 设备的应用,基于Visual C++ 创建跨 Android 和 Windows 的应用,以及Visual Studio tools for Unity 创建跨 Andr

对话框(api)

对话框 壹佰软件开发小组  整理编译   如果有很多输入超出了菜单可以处理的程度,那么我们可以使用对话框来取得输入信息.程序写作者可以通过在某选项后面加上省略号(…)来表示该菜单项将启动一个对话框. 对话框的一般形式是包含多种子窗口控件的弹出式窗口,这些控件的大小和位置在程序资源描述文件的「对话框模板」中指定.虽然程序写作者能够「手工」定义对话框模板,但是现在通常是在Visual C++ Developer Studio中以交谈式操作的方式设计的,然后由Developer Studio建立对话框

Visual C++ 使用的文件

.C - C 语言源文件: 这种文件编译为 C 文件.如果其中包含 C++ 代码,必须将文件重命名为 .CPP 或 .CXX 文件,或在编译文件时使用 /Tp 开关.如果源文件包含 C++ 代码,Microsoft 建议将文件重命名为具有 .CPP 或 .CXX 扩展名. .CPP 或 .CXX - C++ 语言源文件: 这种文件编译为 C++ 文件.要将其编译为 C 文件(假设源文件中没有 C++ 代码),必须将文件重命名为 .C 文件(推荐),或在编译该文件时使用 /Tc 开关. .H..H

WPF——菜单栏及TabControl

一.先造一个窗体,然后在窗体里面增加菜单栏及原始的TabControl选项卡 <Grid> <Menu> <MenuItem Header="文件" Click="MenuItem_Click_3"> <MenuItem Header="打开新窗口" Click="MenuItem_Click_1"></MenuItem> <MenuItem Header=&q

安卓自己定义对话框及The specified child already has a child问题

问题:在android开发过程中,有时会在不同情况下遇到同种问题:The specified child already has a parent.You must call removeView() on the child's parent first.日志中例如以下图所看到的: 分析:意思是这个特定的child已经有一个parent了,假设你要继续使用它,就必须先调用removeView()方法移除它原来的的parent,才干继续你的内容. 举例:在主activity中点击按键弹出自己定义

解析Visual Studio 2015促进生产力的10个新功能

1 性能提示 Performance Tips 当我们想知道执行一段代码所耗费的时间时,需要借助于.NET 框架的Stopwatch类,像下面这样: class Program { static void Main() { // Create new stopwatch Stopwatch stopwatch = new Stopwatch(); // Begin timing stopwatch.Start(); // Do something 这里是需要测试的耗费时间的代码 for (int

解决VS命令提示符 “Setting environment for using Microsoft Visual Studio. 此时不应有“系列错误

一.起因 最近在玩Boost库.当然首先是要进行Booist库的安装和配置.于是浅墨Google了一下boost库的安装配置攻略,下载了最新版1.55的boost库,就愉悦地开始进行配置了. 当进行到第五步,要在VS命令提示符中运行bootstrap.bat的时候,问题就来了,按着攻略打开Visual Studio2010命令提示符,就迎面报错: "Setting environment for using MicrosoftVisual Studio. 此时不应有\Mirosoft"