📄 menutop.c
字号:
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);//高亮显示
#endif
#ifdef RockBack
} else {//当前位置为0, 顶部 上移 需要刷新全部子菜单项显示 //1.回滚方式,到了顶部后回滚到底部
#ifdef DynamicBar
if ((ItemNum > DispMax)||(BarDataMode == DynamicData)){//需要显示的Bar多于单屏可以显示的Bar,那么重新显示//08/29
#else
if (ItemNum > DispMax) {//需要显示的Bar多于单屏可以显示的Bar,那么重新显示
#endif
#else
}else if(ItemBack != 0){
if (ItemNum > DispMax) {//需要显示的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); //维护滚动条
Jump2Menu(SelfMenuIndex,FlashMode_NoAction);
}
//Bar项菜单向右按键的行为
//维护Bar显示
void BarMenuRight(void)
{
U8 Menu_i; //计数变量 在菜单函数中用到
U8 Menu_j; //计数变量
U8 ItemBack;
ItemBack = Item;
//---维护Item
if (Item == (ItemNum-1)) {
Item = 0;
} else {
Item++;
}
//------------
//---维护显示
if (Where != (DispMin-1)) {//当前位置不为最末,两次反显
#ifdef LessCPUUseage
/*
如果是使用">"这样的符号标志当前反显项,那么直接反显该标志好了 2007、1、8
*/
GUI_SetEnFont(En_8x16);
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);//反显
#endif
#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); //维护滚动条
Jump2Menu(SelfMenuIndex,FlashMode_NoAction);
}
//*********************************************************
/*
*****************************************************************************
* DispIcoMenuInit - 图标层菜单界面
* DESCRIPTION: -
* 共有5个函数
DispIcoMenuInit DispIcoMenuUp DispIcoMenuDown
DispIcoMenuLeft DispIcoMenuRight
* @Return :
*
*****************************************************************************
*/
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,ICO_PosY+ICO_YSize,126,GUI_TA_HCENTER);//菜单名字
GUI_DrawIcon(icos[Item],ICO_PosX,ICO_PosY); //图标
//显示按键对应的文字提示,1-->"进入"
GUI_DispStringAtBar(*(Tip[language].Text+1),0,Enter_PosY,126,GUI_TA_HCENTER);
Bar(Item,ItemNum,MenuBarPosX,MenuBarNumPosX); //维护滚动条
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:{
Jump2Menu(SelfMenuIndex,FlashMode_NoAction);
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,ICO_PosY+ICO_YSize,126,GUI_TA_HCENTER);//菜单名字
GUI_DrawIcon(icos[Item],ICO_PosX,ICO_PosY); //图标
Bar(Item,ItemNum,MenuBarPosX,MenuBarNumPosX); //维护滚动条
Jump2Menu(SelfMenuIndex,FlashMode_NoAction);
}
void DispIcoMenuRight()
{
if(Item==(ItemNum-1)){
Item = 0;
}else{
Item++;
}
GUI_DispStringAtBar(*(DispItem+Item),0,ICO_PosY+ICO_YSize,126,GUI_TA_HCENTER);//菜单名字
GUI_DrawIcon(icos[Item],ICO_PosX,ICO_PosY); //图标
Bar(Item,ItemNum,MenuBarPosX,MenuBarNumPosX); //维护滚动条
Jump2Menu(SelfMenuIndex,FlashMode_NoAction);
}
//---------------------------------------------------------
//---------------------------
void DispBuildTime(void)//编译时间
{
GUI_DispStringAt("Build Time:",0,0);
GUI_DispStringAt(__DATE__,0,2);
GUI_DispStringAt(__TIME__,0,4);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -