Skip to content

davg1/MultiMenu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 

Repository files navigation

多级菜单

因为经常需要使用加上原本的代码过于简单所以自己添加了许多功能

修正了原本进入二级以上菜单后无法返回正确位置的bug

使用方法

  1. 自己实现清屏、打印标题、打印选项和反色选项的函数

例子:

void lcdMenu_printSelect( uint8_t i, uint8_t top, char * name )
{
    /* LcdDisplayString(x坐标,y坐标,显示字符串,是否反色) */
	LcdDisplayString( 0, (i - top) * 24 + 32, name, COLOR_CONVERT );
}

void lcdMenu_printNormal( uint8_t i, uint8_t top, char * name )
{
	LcdDisplayString( 0, (i - top) * 24 + 32, name, COLOR_NORMAL );
}
  1. 使用MenuItemDef(ItemName, name, func, child)声明所有的选项

ItemName是变量名,name才是显示的字符串,func是选中后执行的函数的指针,child是子菜单的指针

例子:

MenuItemDef(Item1, "选项一", NULL, NULL);
MenuItemDef(Item2, "选项二", NULL, NULL);
  1. 使用ComMenuItemDef(ArrName, ...)合并相同菜单下的选项

ArrName是合并后的菜单数组名,...是用户自己填入的刚刚声明的选项,用MenuItem(ItemName)来填写。

例子:

ComMenuItemDef(Arr1, MenuItem(Item1), MenuItem(Item2));
  1. 使用MenuDef(MenuName, name, ArrName, Parent)声明所有菜单

MenuName是菜单变量名,name是菜单标题字符串,Parent上级菜单的指针

例子:

MenuDef(Menu1, "主菜单", ComMenuItem(Arr1), NULL);
  1. 使用InitMenuState(name, MaxRox, MainMenu)初始化菜单状态

name是菜单状态的变量名,MaxRox是单页最大显示选项数量,MainMenu是主菜单的指针(你会创建不止一个菜单,而初始化菜单状态则只需要把开机显示的菜单指针挂上去就可以了)

例子:

InitMenuState(MenuState, 5, Menu(Menu1))

上述都完成后,就可以调用菜单的操作函数使用了!

About

简洁多级菜单代码,可自定义程度高

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages