📄 fileopermenu.c
字号:
#include "LCD_FUN.H"
#define MENUNUM 6
#define CHDISPMAX 2
uchar code CHIMenuText[][6]={
{66,65,0},//打开
{70,71,0},//属性
{72,73,0},//复制
{76,77,0},//剪切
{74,75,0},//删除
{80,81,0}, //粘贴
{56,57,70,71,0},//优盘属性
{109,110,88,89,90,0}//新建文件夹
};
typedef struct
{
uchar TextIndex;
uchar TextNum;
}MeunTextStru;
MeunTextStru code MenuText[]={
{0,8}
};
uchar *Item_MenuText(uchar Index,Item)
{
return CHIMenuText[Item+Index];
}
uchar Item=0;
extern uchar where;
uchar IndexNum=0;
//extern uchar ItemPlace[MENUNUM];
//extern uchar SaveIndex[MENUNUM];
//uchar SaveItem[MENUNUM];
uchar ItemMaxNum;
//uchar MenuLay=0;
//---------------菜单处理函数----------------------------------------------------
void Menu_Up(void)
{ uchar ItemBackup;
uchar i,Menu_j;
ItemBackup=Item;
if(Item==0)
Item=ItemMaxNum-1;//最大条项数
else
Item--;
if(where==0)//如果现在是在顶项处
{
if(CHDISPMAX>=ItemMaxNum-1)//如果可以显示所有项。则由顶项跳到底项。
{
where=ItemMaxNum-1;
GUI_DispStringAt(Item_MenuText(IndexNum,ItemBackup),0,0,6,0,0);
GUI_DispStringAt(Item_MenuText(IndexNum,Item),where,0,6,0,1);
}
else//否则所有项下移一行。
{
GUI_DispStringAt(Item_MenuText(IndexNum,Item),0,0,6,0,1);//显示当前项目
Menu_j=Item;
for(i=1;i<3;i++)//显示其它项
{ Menu_j++;
if(Menu_j>ItemMaxNum-1)
Menu_j=0;
GUI_DispStringAt(Item_MenuText(IndexNum,Menu_j),i,0,6,0,0);
}
}
}
else
{
where--;
GUI_DispStringAt(Item_MenuText(IndexNum,Item),where,0,6,0,1);
GUI_DispStringAt(Item_MenuText(IndexNum,ItemBackup),where+1,0,6,0,0);
}
GUI_ScrollBar(ItemMaxNum, Item);
}
void Menu_Down(void)
{ uchar ItemBackup;
uchar i,Menu_j;
ItemBackup=Item;
if(Item==ItemMaxNum-1)
Item=0;
else
Item++;
if(where==CHDISPMAX||where==ItemMaxNum-1)//如果位于显示末项
{
if(CHDISPMAX>=ItemMaxNum-1)//如果可以显示所有项。则由底项跳到顶项。
{
where=0;
GUI_DispStringAt(Item_MenuText(IndexNum,Item),where,0,6,0,1);
GUI_DispStringAt(Item_MenuText(IndexNum,ItemBackup),ItemMaxNum-1,0,6,0,0);
}
else
{
GUI_DispStringAt(Item_MenuText(IndexNum,Item),2,0,6,0,1);
Menu_j=Item;
for(i=CHDISPMAX;i>0;i--)
{ Menu_j--;
if(Menu_j==255)
Menu_j=ItemMaxNum-1;
GUI_DispStringAt(Item_MenuText(IndexNum,Menu_j),i-1,0,6,0,0);
}
}
}
else
{
where++;
GUI_DispStringAt(Item_MenuText(IndexNum,Item),where,0,6,0,1);
GUI_DispStringAt(Item_MenuText(IndexNum,ItemBackup),where-1,0,6,0,0);
}
GUI_ScrollBar(ItemMaxNum, Item);
}
//---------------------根据条层选择号和所在位置刷新屏幕显示条层的内容---------------------------------
void Menu_Redisp(uchar whereI,uchar ItemJ)
{
uchar i;
uchar Menu_j;
GUI_DispStringAt(Item_MenuText(IndexNum,ItemJ),whereI,0,6,0,1);//显示当前选项
//显示其它选项。
Menu_j=ItemJ;
for(i=whereI;i>0;i--)//显示当前项上面部分。
{
if(Menu_j==0)
Menu_j=ItemMaxNum-1;
else
Menu_j--;
GUI_DispStringAt(Item_MenuText(IndexNum,Menu_j),i-1,0,6,0,0);
}
Menu_j=ItemJ;
for(i=whereI+1;i<=CHDISPMAX;i++)//显示当前项下面部分。
{
if(i>ItemMaxNum-1)//如果所要显示项目小于最大显示数,则只显示到ItemMaxNum-1
break;
if(Menu_j==ItemMaxNum-1)
Menu_j=0;
else
Menu_j++;
GUI_DispStringAt(Item_MenuText(IndexNum,Menu_j),i,0,6,0,0);
}
GUI_ScrollBar(ItemMaxNum, Item);
}
void FileOperInit(void)
{ LCD_clr();
Item=0;
where=0;
IndexNum=0;
ItemMaxNum=MenuText[0].TextNum;
Menu_Redisp(where,Item);
LCD_set_RC(3,0);
LCD_putc(47,0);LCD_putc(48,0);//显示 -操作
LCD_set_RC(3,5);
LCD_putc(45,0);LCD_putc(46,0);//显示 -返回
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -