C++面向对象语言自制多级菜单功能实现代码C语言

因为要做一个小应用,需要一个菜单类,在网上找了许久,也没有找到一款心仪的菜单类,索性用C++语言,自制一个命令行级别的菜单类,并制作成库,现记录下来,供以后借鉴。

菜单类主要负责菜单的创建、修改、删除,是包含菜单结构组织和响应函数的模型,用户拥有充分的自主性,可根据需要自定义菜单显示和响应函数。其中菜单项使用vector容器数据结构,根据用户命令可进行菜单创建、修改、删除,而显示和响应函数则利用函数指针进行保存,体现了回调函数的特性。

菜单浏览器类主要负责菜单结构的浏览导航。私有变量是2个菜单类指针,1个是根目录指针,1个是当前目录指针。

网上的资料有很多了,在此仅简单记录。

主要有2种方法实现用户自定义的菜单类,共同点是attachDisplay和attachAction所带的参数均为用户自定义的函数。

主要利用菜单类parseMenu函数实现,写了1个解析器,可以实现菜单类的自动生成。

/*脚本生成菜单*/void(*p_display[])(string&,vector&,unsignedint&)={/*root*/display_root,/*log*/display,/*operate*/display,/*menu*/display,/*constrast*/display_compare,/*adjust*/display,/*about*/display};void(*p_action[])()={/*root*/action_root,/*log*/action,/*operate*/action_operate,/*menu*/action,/*constrast*/action_compare,/*adjust*/action_adjust,/*about*/action};HeleMenu*m1=HeleMenu::parseMenu("{历史{},操作{save,unsave},菜单{对比度{1,2,3,4},clearAll,rePower,shutdown,校准{confirm},关于{(c)hele2024,这是一个菜单}}}",p_display,p_action);HeleMenuViewer::init(m1);HeleMenuViewer::gotoRoot();//到达根菜单while(true){//启动system("cls");HeleMenuViewer::display();HeleMenuViewer::action();}parseMenu所带的参数共3个,第1个是菜单结构字符串,也就是生成菜单结构的脚本,后面2个参数分别是显示函数指针数组和响应函数指针数组。为便于理解,下面我将用户自定义菜单结构展开:

主要使用上、下、左、右、空格、回车、退出这些按键,只实现部分功能。

运用C++面向对象思维进行编程,代码体积大,效率低;

利用脚本生成菜单是个新颖的思路,但容错性不好,没有对脚本进行规范化的检查,对用户不友好;

可以利用ArduinoSTL库,将此库移植进Arduino系列单片机项目中;

使用了动态分配内存技术,对于RAM较小的单片机,容易内存溢出。

THE END
1.如何通过C++开发实现图形界面应用程序?图形界面应用程序是我们日常生活中经常使用的一种软件,它可以提供直观、友好的界面,让用户更方便地使用计算机。C++是一种功能强大的编程语言,也可以用于开发图形界面应用程序。本文将介绍通过C++开发图形界面应用程序的基本步骤,并以一个简单的计算器应用程序为例进行演示。 https://blog.csdn.net/fb98237834/article/details/144331183
2.菜单编辑器(C++)MicrosoftLearn为菜单栏上的新菜单指定名称后,新项框移到右边(让你可以添加其他菜单)。 此时另一个新项框在第一个菜单下面打开,你可以向其中添加菜单命令。 “新建项”框,焦点在你键入菜单名称后转移 备注 要在菜单栏上创建单项菜单,请将“弹出”属性设置为 False。 https://learn.microsoft.com/zh-cn/cpp/windows/menu-editor
3.补充3:C++Builder程序中菜单工具的设计一、引言 菜单栏、工具栏是现代软件常用界面,使用C++Builder编写菜单、工具十分方便,本节介绍编写菜单、工具程序的基本方法。常用的菜单有两种:主菜单(MainMenu)和弹出菜单(PopupMenu)主讲教师:主讲教师:张鹏祥 补充3:菜单、补充3:菜单、工具软件的编写3:菜单 二、主菜单的设计方法 1、启动C++Builder集成环境,https://wenku.baidu.com/view/bba73ee7a2c7aa00b52acfc789eb172dec639950.html
4.UnrealEngine4游戏开发入门经典虚幻引擎4是被许多专业游戏开发者和独立游戏开发者使用的一个强大的游戏引擎。当你首次使用像虚幻引擎这样的工具时,弄清楚该从哪里开始可能是一项艰巨的任务。本书为你提供了一个起点,介绍虚幻引擎4的界面、工作流以及许多编辑器和工具。本书将帮助你建立一个强大的基础,并且激发你进一步研究虚幻引擎和游戏设计的兴趣https://labs.epubit.com/bookDetails?id=N6999
5.使用C++WinForm如何创建菜单栏问答在C++ WinForm 中创建菜单栏,可以按照以下步骤操作:1. 打开 Visual Studio,创建一个新的 C++ WinForm 应用程序项目。2. 在 WinForm 窗体设计器https://www.yisu.com/ask/82824471.html
6.实验指导C语言程序设计教学运行与管理2.进入Visual C++,并新建一个C++源程序文件。 3.熟悉Visual C++的集成环境,了解各菜单项有哪些子菜单。 4.输入下面的程序(教材中的例1.1),注意区分大小写。 #include void main() { printf("This is a C program.\n"); } 编译并运行程序。 https://www.gxtcmu.edu.cn/ggxy/jysjs1/xxglyxxxtjysyxxxgcjyshs/jxyhygl2/cyycxsj/content_29231
7.菜鸟教程Docker 是一个开源的应用容器引擎,基于 Go 语言 【学习 Ruby】 一种为简单快捷的面向对象编程(面向对象程序设计)而创的脚本语言 【学习 Java】 一种可以撰写跨平台应用软件的面向对象的程序设计语言 【学习 C】 一门通用计算机编程语言 【学习 C++】 C++是在C语言的基础上开发的一种通用编程语言 【学习 Perl】https://www.runoob.com/
8.利用C++Builder定制系统菜单学习C++Builder的资料真的很少,下面是从一本书中学到的,不知对大家有没有帮助,拿出来给大家看看: 通常在应用程序的主窗体中,利用鼠标左键点击左上角的图标,会弹出一个菜单,称之为“系统菜单”。 在窗体中并没有系统菜单对应的组件,所以有时我们需要定制系统菜单时就比较麻烦。具体可以能过下面的步骤实现: http://m.it168.com/articleq_180998.html
9.java多级分类菜单设计java分类imking的技术博客Java 被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。Java 虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性。 1. 2. 3. 3、Java 和 C++ 的区别? 都是面向对象的语言,都支持封装、继承和多态。 https://blog.51cto.com/u_13446/7261125