?? 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 + -