📄 menutop.c
字号:
{
//需要显示的Bar多于单屏可以显示的Bar,那么重新显示全部
#endif
Menu_j=Item ;
Menu_i=0 ;
//项是 Item 位置 0
BarDisp(*(DispItem+Menu_j),BarXOffset,Menu_i*BarYSize+BarYOffset,1);
if(Menu_j==(ItemNum-1))
{
//维护Menu_j
Menu_j=0 ;
}
else
{
Menu_j++;
}
//显示其他项
for(Menu_i=1;Menu_i<DispMax;Menu_i++)
{
BarDisp(*(DispItem+Menu_j),BarXOffset,Menu_i*BarYSize+BarYOffset,0);
if(Menu_j==(ItemNum-1))
{
Menu_j=0 ;
}
else
{
Menu_j++;
}
}
Where=0 ;
//当前位置依然在开头的0位置
}
else
{
//单屏能显示完全部菜单项,"顶部 上移"应当跳转到底部(或者什么都不做)
//当仅仅只有一项的时候,应当一直在Where=0的地方反显的!!!这里也能实现,因为最后是反显的函数
Where=ItemNum-1 ;
//取消顶部的原有的反显 项ItemBack 位置0
BarDisp(*(DispItem+ItemBack),BarXOffset,0*BarYSize+BarYOffset,0);
//反显根部 项Item 位置ItemNum-1
BarDisp(*(DispItem+Item),BarXOffset,Where*BarYSize+BarYOffset,1);
//反显
}
#ifdef RockBack
}
#else
}
else
{
Item=ItemBack ;
//Restore
}
#endif
Bar(Item,ItemNum,125,120); //jjx //维护滚动条
Jump2Menu(SelfMenuIndex,FlashMode_NoAction);
}
//Bar项菜单向右按键的行为
//维护Bar显示
void BarMenuRight(void)
{
INT8U Menu_i ;//计数变量 在菜单函数中用到
INT8U Menu_j ;//计数变量
INT8U ItemBack ;
ItemBack=Item ;//---维护Item
if(Item==(ItemNum-1))
{
Item=0 ;
}
else
{
Item++;
}
//---维护显示
if(Where!=(DispMin-1))
{
//当前位置不为最末,两次反显
if (LessCPUUseage==TRUE)
{
GUI_SetEnFont(En_6x12);
GUI_DispCharAt(' ',BarXOffset,(Where++)*BarYSize+BarYOffset);
GUI_DispCharAt('>',BarXOffset,Where*BarYSize+BarYOffset);
}
else
{
//原来位置取消反显 项是ItemBack 位置Where
BarDisp(*(DispItem+ItemBack),BarXOffset,(Where++)*BarYSize+BarYOffset,0);
//下移后的位置反显 项是Item 位置Where+1(Where++实现)
BarDisp(*(DispItem+Item),BarXOffset,Where*BarYSize+BarYOffset,1);
//反显
}
#ifdef RockBack
}
else
{
//当前位置为DispMax 底部 下移
#ifdef DynamicBar
if((ItemNum>DispMax)||(BarDataMode==DynamicData))
{
//需要显示的Bar多于单屏可以显示的Bar,那么重新显示//08/29
#else
if(ItemNum>DispMax)
{
//需要显示的Bar多于单屏可以显示的Bar,那么重新显示
#endif
#else
}
else if(ItemBack!=(ItemNum-1))
{
//当前位置为DispMax 如果原来显示位置不是最后一项,则 底部 下移
if(ItemNum>DispMax)
{
//需要显示的Bar多于单屏可以显示的Bar,那么重新显示
#endif
Menu_j=Item ;
Menu_i=DispMax ;
//项是 Item 位置是 DispMax
BarDisp(*(DispItem+Menu_j),BarXOffset,(Menu_i-1)*BarYSize+BarYOffset,1);
if(Menu_j==0)
{
Menu_j=ItemNum-1 ;
}
else
{
Menu_j--;
}
//显示其他项
for(Menu_i=DispMax-1;Menu_i>0;Menu_i--)
{
BarDisp(*(DispItem+Menu_j),BarXOffset,(Menu_i-1)*BarYSize+BarYOffset,0);
if(Menu_j==0)
{
Menu_j=ItemNum-1 ;
}
else
{
Menu_j--;
}
}
Where=DispMax-1 ;
//当前位置依然末尾位置
}
else
{
//单屏能显示完全部菜单项,"底部 下移"应当跳转到顶部反显(或者什么都不做)
Where=0 ;
//取消底部原有反显 项ItemBack 位置ItemNum-1
BarDisp(*(DispItem+ItemBack),BarXOffset,(ItemNum-1)*BarYSize+BarYOffset,0);
//反显顶部 项Item 位置0
BarDisp(*(DispItem+Item),BarXOffset,Where*BarYSize+BarYOffset,1);
//反显
}
#ifdef RockBack
}
#else
}
else
{
Item=ItemBack ;
//Restore
}
#endif
Bar(Item,ItemNum,MenuBarPosX,MenuBarNumPosX);// jjx //维护滚动条
Jump2Menu(SelfMenuIndex,FlashMode_NoAction);
}
/*********************************************************
*****************************************************************************
* DispIcoMenuInit - 图标层菜单界面
* DESCRIPTION: -
* 共有5个函数
DispIcoMenuInit DispIcoMenuUp DispIcoMenuDown
DispIcoMenuLeft DispIcoMenuRight
******************************************************************************/
void DispIcoMenuInit()
{
ItemNum=IcoMenu[language].TextNum ;//多少数据项
DispItem=IcoMenu[language].Text ;//数据
GUI_Clear();
//-------------------
if(Flash==FlashMode_AutoInit)
{
//从0进入,初始化Item等值
PUSH();
Item=0 ;
Where=0 ;
}
GUI_DispStringAtBar(*(DispItem+Item),0,1,LCD_XSIZE,GUI_TA_HCENTER);//菜单名字
GUI_DrawIcon(icos[Item],ICO_PosX,ICO_PosY);//图标
//显示按键对应的文字提示,1-->"选择"
GUI_DispStringAt(*(Tip[language].Text+1),0,LCD_YSIZE-14);
//显示按键对应的文字提示,0-->"退出"
GUI_DispStringAt(*(Tip[language].Text+4),LCD_XSIZE-24,LCD_YSIZE-14);
Bar(Item,ItemNum,MenuBarPosX,MenuBarNumPosX); //jjx //维护滚动条
return ;
}
/*
*****************************************************************************
* DispIcoMenuUp - 图标层下确定键的行为
* DESCRIPTION: -
* 分发处理各个跳转
* 第一层菜单的Up键处理
* Return :
******************************************************************************/
void DispIcoMenuUp()
{
switch(Item)
{
case 0 :
{
GUI_Clear();
//功能
Jump2Menu(MenuFuncIndex,FlashMode_AutoInit);
return ;
}
case 1 :
{
GUI_Clear();
//参数
Jump2Menu(MenuParaIndex,FlashMode_AutoInit);
return ;
}
case 2 :
{
GUI_Clear();
//测量
Jump2Menu(MenuMeasureIndex,FlashMode_AutoInit);
return ;
}
case 3 :
{
GUI_Clear();
//语言
Jump2Menu(MenuLanguageIndex,FlashMode_ManualInit);
//在MenuLanguage.C中的DispMenuLanguageInit函数中修改Item Where!
return ;
}
case 4 :
{
GUI_Clear();
//设置
Jump2Menu(MenuSetupIndex,FlashMode_AutoInit);
return ;
}
case 5 :
{
Jump2Menu(SelfMenuIndex,FlashMode_NoAction);
return ;
}
default :
{
Jump2Menu(MenuTopIndex,FlashMode_NoAction);
return ;
}
}
}
void DispIcoMenuDown()
{
POP();
}
void DispIcoMenuLeft()
{
if(Item==0)
{
Item=ItemNum-1 ;
}
else
{
Item--;
}
GUI_DispStringAtBar(*(DispItem+Item),0,1,LCD_XSIZE,GUI_TA_HCENTER);//菜单名字
GUI_DrawIcon(icos[Item],ICO_PosX,ICO_PosY);//图标
Bar(Item,ItemNum,MenuBarPosX,MenuBarNumPosX); //jjx //维护滚动条
Jump2Menu(SelfMenuIndex,FlashMode_NoAction);
}
void DispIcoMenuRight(void)
{
if(Item==(ItemNum-1))
{
Item=0 ;
}
else
{
Item++;
}
GUI_DispStringAtBar(*(DispItem+Item),0,1,LCD_XSIZE,GUI_TA_HCENTER); //菜单名字
GUI_DrawIcon(icos[Item],ICO_PosX,ICO_PosY);//图标
Bar(Item,ItemNum,MenuBarPosX,MenuBarNumPosX); //jjx //维护滚动条
Jump2Menu(SelfMenuIndex,FlashMode_NoAction);
}
/*
Bar的算法
___
| |
| |
| |<-|-----BarLen
| L
| |
| |
| _|_
Bar的滑动距离是L-BarLen
为了美观,可以在开始和结尾部分多流出来一些点,那么滑动距离要扣除这些点的长度,并在计算结果
得到0的时候,添加上上端要留出来的点BarRemainDot
2种显示方式:
一种是BarLen是定长的,
一种BarLen是根据显示总共的项数定下来的
*/
void Bar(INT8U Item_,INT8U ItemNum_,INT8U BarPosX,INT8U BarNumPosX)
{
return;
}
//编译时间
void DispBuildTime(void)
{
GUI_DispStringAtBar("编译时间",0,1,LCD_XSIZE,GUI_TA_LEFT);
GUI_DispStringAt(__DATE__,24,16);
GUI_DispStringAt(__TIME__,24,32);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -