📄 menudrv.c
字号:
#include "menudrv.h"
extern void functest();
const menu code menu_table[] = {
{"",null,0,0,0,0},//定义一个不存在的菜单
{"文件",null,0,2,0,7},//1
{"编辑",null,1,3,0,0},//2
{"搜索",null,2,4,0,0},//3
{"项目",null,3,5,0,0},//4
{"执行",null,4,6,0,0},//5
{"窗口",null,5,0,0,0},//6
{"打开",null,0,8,1,0},//7
{"关闭",functest,7,0,1,0},//8
};
unsigned char curr_pos;//光标位置行号
unsigned char curr_menu_id;//当前菜单下标
void menu_esc()//上一级 ,退出
{
if(menu_table[curr_menu_id].up != 0){
cls();
view_menu(menu_table[curr_menu_id].up);
}//退出菜单的处理
}
void menu_ok()//确定
{//有下一级菜单
if(menu_table[curr_menu_id].down != 0){
cls();
view_menu(menu_table[curr_menu_id].down);
return;
}
//有操作函数
if(menu_table[curr_menu_id].oper != null){
menu_table[curr_menu_id].oper();
return;
}
}
void view_menu(unsigned char i)//显示菜单
{
menu *p;
curr_pos = 0;
curr_menu_id = i;
p = &menu_table[i];
for(i = 0;i < 4;i++){
location(0,i);
print(p->str);
if(p->next == 0) break;
p = &menu_table[p->next];
}
inv_line(curr_pos,0xff);
}
void menu_up()//上一条
{
unsigned char p;
unsigned char i;
p = curr_menu_id;
if(menu_table[p].prv == 0) return;//没上一条的情况
if(curr_pos != 0){//当前光标不在最上
inv_line(curr_pos,0x00);
curr_pos--;
inv_line(curr_pos,0xff);
curr_menu_id = menu_table[p].prv;
}else{
//当前光标在最上,再写菜单项
curr_menu_id = menu_table[p].prv;
p = curr_menu_id;
for(i = 0;i < 4;i++){
location(0,i);
print(menu_table[p].str);
if(menu_table[p].next == 0) break;
p = menu_table[p].next;
}
}
}
void menu_down()//下一条
{
unsigned char p;
unsigned char i;
p = curr_menu_id;
if(menu_table[p].next == 0) return;//没下一条的情况
if(curr_pos != 3){//当前光标不在最下
inv_line(curr_pos,0x00);
curr_pos++;
inv_line(curr_pos,0xff);
curr_menu_id = menu_table[p].next;
}else{
//当前光标在最下,再写菜单项
curr_menu_id = menu_table[p].next;
p = menu_table[p].prv;
p = menu_table[p].prv;
for(i = 0;i < 4;i++){
location(0,i);
print(menu_table[p].str);
if(menu_table[p].next == 0) break;
p = menu_table[p].next;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -