C语言对象化设计的实例——LCD菜单
2017-11-13 00:00
796 查看
这是我十三年前读研究生的时候写的系列文章《C语言嵌入式系统编程修炼》系列文章中的一小节,是一个用面向对象,把LCD上面菜单,对象化的例子。该文章原始出处: http://soft.yesky.com/lesson/188/2023188.shtml
菜单操作
无数人为之绞尽脑汁的问题终于出现了,在这一节里,我们将看到,在C语言中哪怕用到一丁点的面向对象思想,软件结构将会有何等的改观!
笔者曾经是个笨蛋,被菜单搞晕了,给出这样的一个系统:
图1 菜单范例 |
/* 按下OK键 */ void onOkKey() { /* 判断在什么焦点菜单上按下Ok键,调用相应处理函数 */ Switch(currentFocus) { case MENU1: menu1OnOk(); break; case MENU2: menu2OnOk(); break; … } } /* 按下Cancel键 */ void onCancelKey() { /* 判断在什么焦点菜单上按下Cancel键,调用相应处理函数 */ Switch(currentFocus) { case MENU1: menu1OnCancel(); break; case MENU2: menu2OnCancel(); break; … } } |
/* 将菜单的属性和操作"封装"在一起 */ typedef struct tagSysMenu { char *text; /* 菜单的文本 */ BYTE xPos; /* 菜单在LCD上的x坐标 */ BYTE yPos; /* 菜单在LCD上的y坐标 */ void (*onOkFun)(); /* 在该菜单上按下ok键的处理函数指针 */ void (*onCancelFun)(); /* 在该菜单上按下cancel键的处理函数指针 */ }SysMenu, *LPSysMenu; |
static SysMenu menu[MENU_NUM] = { { "menu1", 0, 48, menu1OnOk, menu1OnCancel } , { " menu2", 7, 48, menu2OnOk, menu2OnCancel } , { " menu3", 7, 48, menu3OnOk, menu3OnCancel } , { " menu4", 7, 48, menu4OnOk, menu4OnCancel } … }; |
/* 按下OK键 */ void onOkKey() { menu[currentFocusMenu].onOkFun(); } /* 按下Cancel键 */ void onCancelKey() { menu[currentFocusMenu].onCancelFun(); } |
面向对象,真神了!
点击阅读原文,进入《C语言嵌入式系统编程修炼》系列
相关文章推荐
- C语言对象化设计的实例——LCD菜单
- 基于状态机的LCD多级菜单设计
- 网页设计-[CSS+DIV设计实例:纯CSS制作下拉导航菜单]
- [Android实例] Android界面设计(左侧隐藏菜单右边显示content)demo
- 单片机C语言下LCD多级菜单的一种实现方法
- 邵国际: C 语言对象化设计实例 —— 命令解析器
- c语言--菜单设计程序
- CSS+DIV设计实例:纯CSS制作下拉导航菜单
- 单片机c语言下lcd多级菜单的一种实现方法
- 简单代码实现LCD菜单(C语言的实现方法---加强版 有视频教程)
- 54、实例 jQuery设计树形结构(类似多级菜单)
- 1.窗体与界面设计-菜单应用实例
- c语言菜单经典实例
- 单片机c语言下lcd多级菜单的一种实现方法
- CSS+DIV设计实例:纯CSS制作下拉导航菜单
- 单片机C语言下LCD多级菜单的一种实现方法
- 60多个网页导航菜单设计实例欣赏
- 基于状态机的LCD多级菜单设计
- Android编程基础之Menu功能菜单设计实例
- Expression Blend实例中文教程(8) - 动画设计快速入门StoryBoard