0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

C语言设计学习,教你如何将LCD菜单对象化

Linux阅码场 来源:未知 作者:佚名 2017-11-17 06:11 次阅读

这是我十三年前读研究生的时候写的系列文章《C语言嵌入式系统编程修炼》系列文章中的一小节,是一个用面向对象,把LCD上面菜单,对象化的例子。该文章原始出处:

http://soft.yesky.com/lesson/188/2023188.shtml

菜单操作无数人为之绞尽脑汁的问题终于出现了,在这一节里,我们将看到,在C语言中哪怕用到一丁点的面向对象思想,软件结构将会有何等的改观!笔者曾经是个笨蛋,被菜单搞晕了,给出这样的一个系统:

要求以键盘上的"← →"键切换菜单焦点,当用户在焦点处于某菜单时,若敲击键盘上的OK、CANCEL键则调用该焦点菜单对应之处理函数。我曾经傻傻地这样做着:

/* 按下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键和CANCEL键的处理变成:

/* 按下OK键 */void onOkKey(){menu[currentFocusMenu].onOkFun();}/* 按下Cancel键 */void onCancelKey(){menu[currentFocusMenu].onCancelFun();}

程序被大大简化了,也开始具有很好的可扩展性!我们仅仅利用了面向对象中的封装思想,就让程序结构清晰,其结果是几乎可以在无需修改程序的情况下在系统中添加更多的菜单,而系统的按键处理函数保持不变。
面向对象,真神了!


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    180

    文章

    7530

    浏览量

    128515
  • LCD菜单
    +关注

    关注

    0

    文章

    2

    浏览量

    6305

原文标题:C语言对象化设计的实例——LCD菜单

文章出处:【微信号:LinuxDev,微信公众号:Linux阅码场】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    C语言lcd上创建菜单对象化实例分享

    这是我十三年前读研究生的时候写的系列文章《C语言嵌入式系统编程修炼》系列文章中的一小节,是一个用面向对象,把LCD上面菜单对象化的例子。
    的头像 发表于 11-14 05:23 5960次阅读

    单片机C语言LCD多级菜单的一种实现方法

    介绍了在C语言环境下,在LCD液晶显示屏上实现多级嵌套菜单的一种简便方法,提出了一个结构紧凑、实用的程序模型。
    发表于 03-03 13:10

    《手把手教你学单片机c语言》视频教程

    `《手把手教你学单片机C语言》视频教程电驴、优酷、迅雷等下载地址《手把手教你学单片机c语言》视频
    发表于 10-26 14:14

    求教如何将Labview的程序转换为C语言

    求教如何将Labview的程序转换为C语言啊,申请软件著作权要用
    发表于 12-24 13:04

    怎么使用结构的LCD菜单

    ),};XC8编译器给了我以下errors:LCD_CONTROL.h:18:error:(262)结构/联合“菜单结构”重新定义了LCD_CONTROL.c:32:error:(187)功能参数太少
    发表于 03-11 06:33

    LCD液晶显示屏上实现多级嵌套菜单

    摘要: 介绍了在C 语言环境下,在LCD 液晶显示屏上实现多级嵌套菜单的一种简便方法,提出了一个结构紧凑、实用的程序模型。关键词: 液晶显示屏; 多级
    发表于 07-14 08:41

    单片机c语言下如何实现lcd多级菜单

    萌新求助,关于单片机c语言lcd多级菜单的一种实现方法
    发表于 10-15 06:36

    怎样用C语言去实现LCD多级菜单

    LCD菜单实现的功能有哪些?怎样用C语言去实现LCD多级菜单呢?
    发表于 10-19 08:13

    如何设置C语言菜单

    如何设置C语言菜单
    发表于 11-11 07:01

    嵌入式编程中C语言的模块和模拟面向对象的相关资料推荐

    模块嵌入式编程中需要对程序进行模块划分的"划"是规划的意思,意指怎样合理的一个很大的软件划分为一系列功能独立的部分合作完成系统的需求。C语言作为一种结构
    发表于 12-15 08:51

    单片机C语言LCD菜单的方法实现

    由于C语言的结构性和模块化,采用C语言编写的程序容易阅读和维护,还有很好的可移植性。本文介绍一种用C语言实现的LCD多级菜单的方法,该方法已
    发表于 03-14 11:32 399次下载

    单片机C语言LCD菜单的实现

    介绍了在C 语言环境下,在LCD 液晶显示屏上实现多级嵌套菜单的一种简便方法,提出了一个结构紧凑、实用的程序模型。
    发表于 09-28 13:57 556次下载

    神2也教你学E语言

    语言是一门以中文作为程序代码编程语言学习例程:易语言-神2也教你学E 语言
    发表于 06-06 17:36 2次下载

    如何使用单片机C语言实现LCD的多级菜单

    介绍了在C 语言环境下,在LCD 液晶显示屏上实现多级嵌套菜单的一种简便方法,提出了一个结构紧凑、实用的程序模型。
    发表于 12-04 17:15 35次下载
    如何使用单片机C<b class='flag-5'>语言</b>实现<b class='flag-5'>LCD</b>的多级<b class='flag-5'>菜单</b>

    基于单片机及C语言LCD多级菜单

    介绍了在C 语言环境下,在LCD 液晶显示屏上实现多级嵌套菜单的一种简便方法,提出了一个结构紧凑、实用的程序模型。
    发表于 05-24 11:00 60次下载