OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2405|回复: 2

如何实现在不同菜单下相同按键的不同功能

[复制链接]

14

主题

44

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
386
金钱
386
注册时间
2016-9-5
在线时间
66 小时
发表于 2017-3-10 16:56:43 | 显示全部楼层 |阅读模式
2金钱
最近查阅了网上用12864构建多级菜单的很多资料,最终采用了这位同学的结构实现了多级菜单http://www.openedv.com/forum.php?mod=viewthread&tid=46635&fromuid=63734
(出处: OpenEdv-开源电子网)
,有更改,能够上下翻都很流畅
后面会附上我自己改的程序,但是依然有很多疑问和待解决的问题,希望各位大神指导

1.结构体中的void (**func)();功能函数是指针类型的,这样写的话是代表没有形参吗?我的程序中写了没有形参的func函数后可以实现功能,但是如果我想要写带形参的功能函数呢?
该怎么定义,该怎么调用?
typedef struct menu
{
        u8 range_from;
        u8 range_to;        //开始和结束符号
        u8 itemCount;                        //项目的总数
        u8 selected;                        //当前选择项
        u8 *MenuItems[Max];                //菜单项目
        struct menu **subMenus;        //子菜单
        struct menu *parent;        //上级菜单指针
        void (**func)();                //功能函数
}Menu;
2.这样的结构,功能按键的功能是唯一确定的,如果我想在不同的菜单下或者功能函数下它的按键功能不一定是这个呢,该如何改

我需要把有关菜单的写成模块化的,利于修改,维护,调用,但我总觉得我的程序好繁琐,很臃肿,很想简化程序
路过的小伙伴们看看吧,给点意见



1.png MenuDisplay.rar (3.43 MB, 下载次数: 165)

最佳答案

查看完整内容[请看2#楼]

1,void (**func)(u8,u16,u32); 这就代表有3个参数,分别是u8,u16和u32 2,你自己写函数实现即可。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-3-10 16:56:44 | 显示全部楼层
1,void (**func)(u8,u16,u32);  这就代表有3个参数,分别是u8,u16和u32
2,你自己写函数实现即可。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

0

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2019-7-3
在线时间
19 小时
发表于 2019-10-3 22:41:08 | 显示全部楼层
我也困类似这个菜单里面一个月时间,错误在用串行的12864/12964,我的难题是子菜单项目要显示参数(要本级菜单显示,不是下一级显示),研究了好久,才发现串 行12864根本不适合,换了并行的就好处,分屏技术不难实现
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-9 02:00

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表