《傻孩子LCD菜单结构.ppt》由会员分享,可在线阅读,更多相关《傻孩子LCD菜单结构.ppt(15页珍藏版)》请在三一办公上搜索。
1、菜单界面的实现方法读Gorgon Meducer 傻孩子菜单引擎,菜单界面的实现方法,建议在看下面内容之前复习一下C语言的如下内容1、结构体2、指向函数的指针3、结构体链表4、傻孩子的菜单引擎,菜单结构体代码struct MenuItem short MenuCount;char*DisplayString;void(*Subs)();struct MenuItem*ChildrenMenus;struct MenuItem*ParentMenus;Null;,菜单界面的实现方法,菜单结构体,当前层节点数,即每层菜单最多能显示的条目数 目的:1、在菜单读取前先读取这个菜单总共拥有的项目数,防止
2、越界。在菜单读取过程中将会有一个计数变量存储菜单移动。所以需要这个变量来确定移动的上界;2、可以方便的实现菜单的滚动。例如:“文件”菜单依次下有:“打开”、“保存”、“打印”、“退出”这4个子项,如果计数存储达到上界“退出”即(MenuCount=4)时再继续向下一级翻页则会回到“打开”。,菜单界面的实现方法,菜单结构体,指向菜单标题字符串的指针目的:指向菜单标题的字符串,指向当选中该级菜单后所要显示的字符串。,菜单界面的实现方法,菜单结构体,指向当前状态应该执行功能函数的指针目的:说明如果选中该级菜单应当执行什么程序,这个指针指向该项所要实现功能的函数。例如:菜单项为“播放”,则该函数指向P
3、lay();,菜单界面的实现方法,菜单结构体,指向当前菜单的下级菜单目的:指向结构体指针,用于存储下一级菜单,在后面的链表中详细说明。,菜单界面的实现方法,菜单结构体,指向当前菜单的上级菜单目的:指向结构体指针,用于存储上一级菜单,在后面的链表中详细说明。,菜单界面的实现方法,菜单结构体,菜单界面的实现方法,下面以下图所示菜单结构实现为例分析结构体的实际运用:,Time Set,Voice Center,Robot Control,Flash Option,菜单结构体,菜单界面的实现方法,首先看一下代码示例:,void RobotMenuInit(void)RobotMenu0.MenuCou
4、nt=5;RobotMenu0.DisplayString=Turn Left;RobotMenu0.Subs=RobotTurnLeft;RobotMenu0.ChildrenMenus=,Robot Menu菜单有5个子项,菜单结构体,菜单界面的实现方法,首先看一下代码示例:,void RobotMenuInit(void)RobotMenu0.MenuCount=5;RobotMenu0.DisplayString=Turn Left;RobotMenu0.Subs=RobotTurnLeft;RobotMenu0.ChildrenMenus=,Robot Menu菜单的第一个子项(用一
5、个菜单结构体实现的RobotMenu数组)标题为“Turn Left”,菜单结构体,菜单界面的实现方法,首先看一下代码示例:,void RobotMenuInit(void)RobotMenu0.MenuCount=5;RobotMenu0.DisplayString=Turn Left;RobotMenu0.Subs=RobotTurnLeft;RobotMenu0.ChildrenMenus=,Robot Menu菜单一个子项“Turn Left”实现的功能函数为RobotTurnLeft();用执行函数指针指向这个函数。,菜单结构体,菜单界面的实现方法,首先看一下代码示例:,void R
6、obotMenuInit(void)RobotMenu0.MenuCount=5;RobotMenu0.DisplayString=Turn Left;RobotMenu0.Subs=RobotTurnLeft;RobotMenu0.ChildrenMenus=,Robot Menu菜单一个子项“Turn Left”没有子菜单,所以指向一个空的操作。,菜单结构体,菜单界面的实现方法,首先看一下代码示例:,void RobotMenuInit(void)RobotMenu0.MenuCount=5;RobotMenu0.DisplayString=Turn Left;RobotMenu0.Sub
7、s=RobotTurnLeft;RobotMenu0.ChildrenMenus=,Robot Menu菜单一个子项“Turn Left”的上一级菜单为主菜单。,菜单结构体,菜单界面的实现方法,菜单结构体链表,Void DateSet(void);,void MainMenuInit(void);,void TimeMenuInit(void);,由MainMenuInit(void)和TimeMenuInit(void)两个函数初始化构造两个菜单数组,此时选中主菜单的Time Set选项,指针指向TimeMenu数组,按菜单移动键,选中DataSet选项,按下确认键后,无下一级子菜单,执行DataSet();函数,