📄 menu.h
字号:
/******************************************************************************
* Menu.H - 菜单相关宏开关 函数声明等
* --------------------
******************************************************************************/
#include "lcd_low.h"
#include "GUI.h"
#define MenuDelay(x) GUI_Delay((x)*1000)
/*
LessCPUUseage:
高亮显示当前项的做法是
1.反显整个Bar项文字 提示当前项
2.通过一个'>'来提示当前位置
第1种方法在低速CPU和LCD上比较费时
因此这个情况下用第2种方法,毕竟反显一个'>'比反显整行要省事的多
但没有解决根本问题,如果依然会出现要全部刷新的情况
如果CPU慢#define LessCPUUseage
否则不定义该值
*/
//
//#define LessCPUUseage
//动态生成条项菜单 需要回滚方式的支持
//#define DynamicBar
//是否回滚方式
#define RockBack
//数字键快捷方式
//需要预定义数字键的键值Key_1---Key_9
//并提供一个函数能把键值转化成实际对应数字 Key = chang_code(Key);
//#define DigiKeyLink
//检查如果需要动态条项菜单,就需要回滚方式,这里做检查
#ifdef DynamicBar
#ifndef RockBack
#error "DynamicBar need RockBack!"
#error "#define RockBack pls"
#endif
#endif
//语言代码
#define CN 0
#define EN 1
//不初始化Flash
#define FlashMode_NoAction 0
//系统系统负责初始化
#define FlashMode_AutoInit 1
//手动初始化
#define FlashMode_ManualInit 2
//重绘画面
#define FlashMode_ReFlash 3
//也就是连续使用Push的个数
#define MenuSize 4 //菜单深度最大值
#ifdef DynamicBar
#define FixedData 0
#define DynamicData 1
//条项内容的来源是固定的还是动态生成的,通常是固定的,
#endif
//-----------------------------------------------------
//Bar型菜单的数据结构
struct Menu
{
char * Name; //菜单名
// char const **Text; //指向显示内容数组的指针
char **Text; //指向显示内容数组的指针
char TextNum; //项个数
// void* (*Action)(); //对应的执行函数
};
//----------------------------------------------------
//对外声明定义于Menu.C的内容
extern char ReFlash ; //子项菜单返回 刷新标志
extern char Flash ; //跳转进入子菜单 刷新标志
extern char language; //语言标志
extern char KeyFuncIndex ; //索引
extern char FatherIndex[MenuSize+1]; //父菜单备份数组
extern char Layer; //菜单层数
extern char ItemBackup[MenuSize]; //当前菜单项备份
extern char ItemBackup_i; //
extern char WhereBackup[MenuSize]; //反显位置备份
extern char WhereBackup_i; //
extern char KeyPressCount; //统计连续按键时间,长时间按键则 版本显示
#ifdef DynamicBar
extern char BarDataMode;
#endif
extern char Item; //当前Bar项 范围:[0,ItemNum-1] 包括0 包括ItemNum-1 共包括ItemNum个取值
extern char ItemNum; //Bar项数
extern char Where; //当前反显位置,[0,DispMax-1] 反映反显的Bar在屏幕上的位置
extern char DispMin; //ItemNum和DispMax中的小者
//当前Bar显示内容指针
//extern char const **DispItem; //项显示内容指针
extern char **DispItem; //项显示内容指针
#ifdef DynamicBar
extern char ** DynamicBarDispItem; //动态项显示内容指针
#endif
//---------------------------------------------------
//返回当前菜单
#define SelfMenuIndex FatherIndex[Layer-1]
//----------------------------------------------------
//extern void Jump2Menu(char Index);//,char FlashMode);
extern void Jump2Menu(char Index,char FlashMode);
//图标层
extern const struct Menu IcoMenu[];
//功能菜单
extern const struct Menu MenuFunc[];
//参数菜单
extern const struct Menu MenuPara[];
//测量菜单
extern const struct Menu MenuMeasure[];
//语言菜单
extern const struct Menu MenuLanguage[];
//Tip
extern const struct Menu Tip[];
//图标
extern char const * const icos[];
//菜单资源指针
extern const struct Menu * BarMenu;
//Tip指针
extern struct Menu * TipBar;
#define SCREENX 240
#define SCREENY 320
#define HINTERVAL 2
#define VINTERVAL 5
#define TITLEX 0
#define TITLEY 0
#define TITLEH 30
#define TITLEW SCREENX
#define STATUEX 0
#define STATUEY (SCREENY - STATUEH - 1)
#define STATUEH 30
#define STATUEW SCREENX
#define SCROLLBARX (SCREENX - SCROLLBARW -1)
#define SCROLLBARY (TITLEH + VINTERVAL - 1)
#define SCROLLBARW 25
#define SCROLLBARH (SCREENY - TITLEH - STATUEH - 2 * VINTERVAL)
#define MENU_BC GUI_WHITE
#define MENU_FC GUI_GREEN
#define MENU_HC GUI_BLUE
#define MENU_TF (&GUI_FontComic24B_ASCII)
#define MENU_CF (&GUI_FontComic18B_ASCII)
#define MENU_TOP_BMP "1:/syspic/logo.bmp"
#define MENU_ICO_BMP "1:/syspic/main.bmp"
#define MENU_BAR_BMP "1:/syspic/barbk.bmp"
//--------------------------------------------------------------------
//#define Enter_PosX 50 //"进入"显示的位置
//#define Enter_PosY 6
#define MenuBarPosX 125
#define MenuBarNumPosX 120
//#define ICO_PosX 48 //图标显示的位置
//#define ICO_PosY 2
//#define ICO_XSize 32 //图标的尺寸
//#define ICO_YSize (-2)
//--------------
//显示位置的宏定义
//父Bar项的显示位置
//#define FatherXOffset 10 //Father的X偏置
//#define FatherYOffset 2 //Father的Y偏置
//Bar项的显示XY偏置
#define BarXOffset (HINTERVAL - 1) //Bar的X偏置
#define BarYOffset (TITLEH + VINTERVAL - 1) //Bar的Y偏置
//Bar项的XY尺寸
#define BarXSize (SCREENX - SCROLLBARW - 2 * HINTERVAL) //Bar的长度
#define BarYSize 25 //Bar的间隔 高度
//char DispMax = 3; //单屏可以显示的最大项 通常这是个固定值--因为你的液晶的大小决定了你一次可以显示的多少,你也可以在程序中修改,但记得维护它--因为所有的Bar型菜单都是要用到它的
#define DispMax 10
//-----------------------
//如下定义从KeyTab中得到
//调整KeyTab时必须更新如下的定义
//否则菜单链接出错!
#define MenuTopIndex 0
#define MenuIndex 7
#define MenuFuncIndex 14
#define MenuParaIndex 21
#define MenuLanguageIndex 28
#define MenuMeasureIndex 35
#define MenuDataIndex 30
void BarMenuInit(void);
void BarMenuBefore(void);
void BarMenuNext(void);
void PUSH(void);
void POP(void);
void DispMenuTop(void);
char CheckKey(void);
int MenuGuiInit(void);
int MenuShowBmp(char *pfn, int x, int y);
void MenuHigLight(int x0, int y0, int xs, int ys, int h);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -