在程序中动态改变菜单

基于Shell脚本菜单系统设计 基于本课程所学要求设计一款程序包含是和系统有关,且不能做诸如计算器,小游戏之类的编程程序;同时代码应尽可能体现使用shell脚本编程优势。本文依照课题老师所要求除了利用(顺序/选择/循环 三大结构)外,还可以运用所学的Linux命令、管道、重定向、命令序列、bash一些技巧、AWK/SED、正则表达式;以上所制定的一款程序,包括文件引用,邮箱通信,交互式应答,系统初始化,定时同步等程序. 阅读详情
  一:   根据程序运行时候的条件,动态改变菜单
效果图:
效果图1
(当安钮为“允许计算”)
图2
(当安钮为“禁止计算”)

二:实现步骤
   为了更好的说明,现编写一个能实现四个数相加,和计算它们的平均数的小程序来说明。
1:先在vc 的MFC AppWizard(exe)中建立一个对话框应用程序,其他均为缺省的

2:点vc菜单“插入”-》资源 建立一个菜单,最后如图:
图3

 3:由于是动态生成的菜单选项,所以我们要实现它的功能就不能在Class Wizard中映射它的函数了,但不要怕,很简单的2步,

a:打开你工程中的Resource.h在里面加入你要生成的菜单的ID,如:
#define IDM_SUM                         32772 //手动加入的菜单IDM_SUM
#define IDM_AVERAGE                     32773   //手动加入的菜单IDM_AVERAGE

 b:在BEGIN_MESSAGE_MAP(CMenuOfDlgDlg, CDialog)中加入它的消息映射
 ON_COMMAND(IDM_SUM, OnSum)                 //手工加入IDM_SUM到函数OnSum的映射
 ON_COMMAND(IDM_AVERAGE, OnAverage)   //手工加入IDM_AVERAGE到函数OnAverage的映射

4:在需要的时候生成菜单
//////////////动态生成子菜单功能实现////////////////
void CMenuOfDlgDlg::OnAllow()
{
 // TODO: Add your control notification handler code here
 if(!bAllow)
 {
  CMenu *pmenu=GetMenu();
  CMenu *pSubmenu=pmenu->GetSubMenu(0);
  pSubmenu->InsertMenu(0,MF_BYPOSITION,IDM_SUM,"求和");
  pSubmenu->InsertMenu(1,MF_BYPOSITION,IDM_AVERAGE,"求平均");
  //pSubmenu->InsertMenu(NULL,MF_BYCOMMAND+1,NULL,"帮助");
  bAllow=TRUE;
  m_Allow.SetWindowText("禁止计算");
 }
 else
 {
  CMenu *pmenu=GetMenu();
  CMenu *pSubmenu=pmenu->GetSubMenu(0);
  pSubmenu->DeleteMenu(IDM_SUM,MF_BYCOMMAND);
  pSubmenu->DeleteMenu(IDM_AVERAGE,MF_BYCOMMAND);
  bAllow=FALSE;
  m_Allow.SetWindowText("允许计算");
 }
}
就这样一个动态菜单就生成了


CMenu类方法:
AppendMenu把一个新选项加到给定的菜单末端
CheckMenuItem()在弹出菜单中,把一个效验标记放到下一个菜单项或从一个菜单项中取消一个效验标记
CheckMenuRadioItem()在此组中,把一个单选按钮放到菜单项傍边或从全部其他菜单选项里取消一个已经存在的单选按钮
EnableMenuItem()激活菜单项或禁用菜单项并使其变灰
GetMenuContextHelpId()检索与菜单结合的帮助上下文ID
GetMenuItemId()在弹出式菜单或顶层菜单中获得菜单项标识符
GetMenuState()获得指定菜单项的状态或弹出菜单中的菜单项成员
GetMenuString()获得指定菜单项的标记
GetSubMenu()获得指向弹出菜单的指针
InsertMenu()在指定位置插入新的菜单项能把其他的选项向下移
ModifyMenu()在指定位置改变已存在的菜单项
RemoveMenu()从指定菜单删除与弹出菜单结合的菜单项
SetMenuContextHelpId()设置与菜单有关的帮助上下文ID
SetMenuItemBitmaps()与菜单项有关的指定效验标记位图


(西南交通大学峨眉校区01级3班 李建超)
Linuxshell脚本之菜单以及函数 一、菜单 1.查看菜单格式 [root@localhost ~]# help select 2.简单菜单小脚本 [root@localhost ~]# vimcaidan.sh 脚本运行结果 二、函数 1.作用 (1)语句块定义成函数约等于别名 (2)定义函数,再引用函数 2.基本格式 (1)function 函数名 { 【这个不怎么用】 命令序列 } (2)函数名(){ ... 阅读详情

相关推荐

shmenu:用纯Bash编写的终端的动态菜单

shmenu:用纯Bash编写的终端的动态菜单

菜单项和菜单命令响应函数

菜单项和菜单命令响应函数 1、创建基于单文档工程Menu,添加菜单项:IDM_TEST  Test 2、通过类向导, 为IDM_TEST在CMainFrame、CMenuView、CMenuDoc、CMenuApp下添加菜单命令响应函数,即WM_COMMAND响应函数。 通过实验发现: 1、响应Test菜单项命令的顺序依次是:视图、文档类、框架类、应用程序类。 2、菜单命令消息路由的具体

MOKA 1万+

微信小程序-微信小程序–健康菜谱

微信小程序--健康菜谱 基于微信小程序的一个查找检索菜谱的应用 效果 功能 分类检索菜谱 发现最新菜谱 根据菜谱名搜索菜谱 用到的API 页面路由 列表渲染 带参数页面跳转 navigator scrollview下拉加载更多 ... 待解决 动态改变标题栏的标题并不能生效,原因未知,具体代码中有注释

对话框上加菜单

问题一:   我没有添加菜单处理事件,菜单却是可以点的,也就是Enabled.         问题二:我添加了菜单更新事件却不能灰化菜单。很不解,也很着急。         void   CMyDlg::OnUpdateTranpan(CCmdUI   *pCmdUI)     {     //   TODO:   在此添加命令更新用户界面处理程序代码

yacper的专栏 1181

二维卡尔曼滤波位置,速度融合

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Ma...

Johnlee2019的博客 8451

HDMI 2.1超高清传输背后的“隐形功臣”:深入浅出图解VESA DSC压缩核心流程

本文深入解析HDMI 2.1超高清传输中的VESA DSC压缩技术,揭示其如何在不损失画质的前提下实现带宽减半。通过切片并行处理和智能算法,DSC技术有效解决了8K/4K高帧率视频的传输瓶颈,成为现代显示设备不可或缺的“隐形功臣”。

weixin_30615767的博客 423

[Visual C++系列] 3.3 使用菜单

3.3 使用菜单 利用菜单接受用户命令是一中很简单的交互方法,同时也是一种很有效的方法。通常菜单作为一中资源存储在文件中,因此我们可以在设计时就利用资源编辑器设计好一个菜单。关于使用VC设计菜单我就不再多讲了,但你在编写菜单时应该尽量在属性对话框的底部提示(Prompt)处

笨笨D幸福 - 后花园 1246

BIM模型导入SuperMap

目录 一、超图 BIM插件安装 1.1 插件下载 1.2 安装 二、BIM模型导出 2.1 Revit插件导出 2.2 SuperMap导入工具 三、SuperMap BIM数据处理与服务发布 四、SuperMap三维数据处理中关于模型高程修改方法 一、超图 BIM插件安装 1.1 插件下载 下载链接:http://support.supermap.com.cn/DownloadCenter/DownloadPage.aspx?tt=ProductAAS&id=134 1..

爱晒太阳的风 3596

在VC中动态改变菜单

> 谈在VC中动态改变菜单大部分Windows应用程序都使用下拉式菜单实现自己特定的函数,它使编程更加方便,不需要在程序中增加多个按钮以完成这些操作。大多数情况下,我们的程序编译生成后,菜单就确定了,不能再修改。然而,在很多情况下,程序要根据用户的自己设置产生不同的菜单以适应不同用户的要求,这就需要我们动态的改变菜单。接下来我们就分析如何动态的生成不同的菜单。  第一步:  运

zswzwy的专栏 1375

使用基于物质点法(MPM)的Anura3D模拟沙柱坍塌

本博客使用开源软件Anura3D软件模拟了一个沙柱坍塌的过程,这个软件是基于基于物质点法(MPM)设计的

weixin_59902634的博客 4043

Clawdbot完 整安装与使⽤指南(保姆级教程)

Clawdbot 是⼀款开源个⼈ AI 智能体(Personal AI Agent),核⼼优势为本地部署+系统级执⾏+全渠道交互,可通过聊天⼯具(Telegram/WhatsApp 等)下达指令,⾃动完成⽂件整理、代码部署、⽇程同步等任务,所有数据本地存储,隐私零泄露。截⾄2026年 1 ⽉,GitHub 星标突破 4 万+,⽀持 Windows/Mac/Linux/云服务器多平台。

A1609926242的博客 1607

谈在VC中动态改变菜单

谈在VC中动态改变菜单bull77  大部分Windows应用程序都使用下拉式菜单实现自己特定的函数,它使编程更加方便,不需要在程序中增加多个按钮以完成这些操作。大多数情况下,我们的程序编译生成后,菜单就确定了,不能再修改。然而,在很多情况下,程序要根据用户的自己设置产生不同的菜单以适应不同用户的要求,这就需要我们动态的改变菜单。接下来我们就分析如何动态的生成不同的菜单。  第一步:  运

iBreathe的专栏 1298

基于STM32L4XX、HAL库的 L76KB-A58定位模块驱动程序设计

/ 确保字符串终止。// 缓冲区溢出,重置。// 重置缓冲区索引。支持GPS、GLONASS、Galileo、北斗和QZSS多系统定位。case 1: // UTC时间。// 配置GPS模块(可选)// 查找GGA语句。// 启动UART接收。// USART1初始化函数。内置LNA和SAW滤波器。

zhusl6688的博客 349

js动态改变下拉菜单内容示例

动态改变下拉菜单内容示例//定义一个二维数组aArray,用于存放城市名称。var aCity=new Array();aCity[0]=new Array();aCity[1]=new Array();aCity[2]=new Array();aCity[3]=new Array();//赋值,每个省份的城市存放于数组的一行。aCity[0][

自由程序员(网络偏执狂)- epzk 3288

34、婴儿监视器应用开发指南

本文详细介绍了基于 ESP32 和 Edge Impulse 开发婴儿监视器应用的全过程,涵盖音频处理、机器学习推理、ESP RainMaker 平台集成以及内存监控等功能。通过实现 AppAudio、AppRmaker 和 AppMem 三个核心类,完成了婴儿哭声的实时检测与远程通知,并通过合理的内存管理优化,有效节省了 ESP32 的内部 RAM 资源。文章还提供了完整的代码示例和配置说明,适用于物联网和嵌入式 AI 应用开发爱好者参考学习。

python9snake的博客 93

​​10.3 时间敏感网络(TSN)协议适配​

本文探讨了时间敏感网络(TSN)协议在PCIe网络加速卡开发中的适配方案,重点分析了时间同步、流量调度和冗余传输三大核心问题。研究从协议实现、硬件加速设计和驱动优化三个维度展开,提出采用FPGA实现PTP时钟同步、动态TAS调度器以及双路径冗余传输等技术方案。通过工业控制网络案例验证,该方案将端到端延迟从120μs降至8μs,带宽利用率提升至92%,同时实现了100%的确定性保障。研究还总结了调试工具和典型问题解决方法,为TSN在PCIe网络中的实际应用提供了技术参考。

amy_mhd的博客 364

PB 程序中动态变更窗口菜单

程序中有两个菜单,m_main,m_mainn,当前使用的是m_main,如何更改当前的菜单为M_MAINN w_main.changemenu(M_MAINN) windowname.ChangeMenu ( menuname {, position } )

happymagic的专栏 3663

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Toolbar动态改变menu

关于Toolbar的使用网上有很多介绍了,这里不赘述了。 1.Toolbar主题一般使用系统的主题ThemeOverlay.AppCompat.Dark.ActionBar。也可以自定义主题: <style name="ToolbarTheme" parent="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <item name="titleTextC

FlowLeaf 4967

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

MDI动态改变菜单、工具栏

在MDI开发中,往往不同的视图需要不同的菜单和不同的工具栏,这样对于不同view可以有不同的操作。 现在分步骤进行实现。 第一步: 添加新的docTemplate 我们知道在MFC中Document/view/ChildFrame是一体的,当新建一个工程后,IDE会自动为我们建立一份Document/view/ChildFrame,因此为了使用不同类型的文档我们需要额外定义另三个类。然后在W...

weixin_33813128的博客 558

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

动态改变下拉菜单内容

方法一 <HTML> <HEAD> <TITLE>动态改变下拉菜单内容示例</TITLE> </HEAD> <SCRIPT LANGUAGE=javascript> //定义一个二维数组aArray,用于存放城市名称。 var aCity=new Array(); aCity[0]=new Array(); aCity[1]=new Array(); aCity[2]=new Array(); aCity[3]=new Array()

qq_45954445的博客 475

手把手教你搞定权限管理,结合Vue实现菜单的动态权限控制!

权限管理在后端项目中主要体现在对接口访问权限的控制,在前端项目中主要体现在对菜单访问权限的控制。在《手把手教你搞定权限管理,结合Spring Security实现接口的动态权限控制!》中...

macrozheng的专栏 2万+

使用 tkinter 的 OptionMenu 组件制作可以改变菜单选项的动态下拉菜单

使用tkinter自带的OptionMenu模块可以制作下拉菜单。然而有时我们希望能够动态调整菜单的选项,可以使用本文的方法配置组件。

fprfsun的博客 3180

动态改变下拉菜单内容示例 js 二位数组示例

动态改变下拉菜单内容示例//定义一个二维数组aArray,用于存放城市名称。var aCity=new Array();aCity[0]=new Array();aCity[1]=new Array();aCity[2]=new Array();aCity[3]=new Array();//赋值,每个省份的城市存放于数组的一行。aCity

nailwl 1450
shellhy
博客等级 码龄23年 0粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值