📄 2004g.c
字号:
int CurrentDisk=0x80;int disk_num=15,boot_num=15;
#include "math.h"
#include "bios.h"
#include "dir.h"
#include "Graphics.h"
#include "stdlib.h"
#include "process.h"
#include "io.h"
#include "fcntl.h"
#include "dos.h"
#include "stdio.h"
#include "string.h"
#include "conio.h"
#include "ctype.h"
#include "mem.h"
#include "a_mouse.h"
#include "a_text.h"
#include "a_menu.c"
unsigned char system_type[9];
void main(void)
{
int i,j,key=F1,error,mousex,mousey;
chinese();
/*---------------------------------------------------*///读软盘的指定位置
/*unsigned char gongbing[9];char mima[]={"GONGBING"};
bootdisk_a(READ,01,00,02,boot_buff);
for(i=0x80;i<0x88;i++)
gongbing[i-0x80]=boot_buff[i];
gongbing[8]='\0';
if(strcmp(gongbing,mima)!=0)
{window(18,9,50,14);textattr(14+(4<<4));clrscr();
box(1,1,6,32);
gotoxy (2,2);cprintf("YOU CAN NOT USE THIS TOOLS");
gotoxy(2,4); cprintf("please press any key......."); getch(); goto ENDS;}
*/
/*------------------------------------------------------*/
// int azz=5;
// sub_menu_nums[1]=azz;
setblank(0);
setcursor(1,0);
search_drivers();
menu_status=system_object(0);
search_disk();
init_menu();
display(pos);
srand(biostime(0,0));
bootdisk(READ,1,drivers[0][1],drivers[0][0],boot_buff);
for(i=0;i<0x5a;i++)
bpbbuf[i]=boot_buff[i]; //记录现在的 bpb
init_mouse(MOUSE_OPTIONAL,MOUSE_TEXT_MODE,MOUSE_TEXT_MODE);//初始化鼠标
show_version();
do{
while(!(key=mouse_trigger(1)));
/* if(!key) key=getkey();*/
if(key>='a' && key<='z') key-=32;
if(!hotkey_func(key))
for(i=0;i<Max_menus;i++) /* 菜单热键判断 */
if(key==main_menu[i].hotkey)
if(i!=last_menu || !sub_menu_on){
if(sub_menu_on)
clear_sub_menu(last_menu);
sub_menu_on=0;
last_menu=i;
key=F10;
break;
}
/* 普通菜单键判断 */
if(sub_menu_on || key==ESC || key==F10 || key==' '||key==LEFT_MOUSE_PRESS){
switch(key){
case ENTER: /* 回车 */
enter: mouse_off(1);
if(sub_menu_on)
if(sub_num<main_menu[last_menu].sub_menu_nums){
main_menu[last_menu].last_choice=sub_num; //记住最后选择的子菜单
if(last_menu==3&&sub_num==2) {kv300();break;}
if(last_menu==5&&sub_num==2) {restore_fat16();break;}
if(last_menu==5&&sub_num==3) {restore_fat32();break;}
sub_menu_on=0;
clear_sub_menu(last_menu); //用于刷新菜单3,5
key=menu_function(last_menu,sub_num);
if(key){
if(key!=Ctrl_Q) ring();
else sys_end=1;
}
}
mouse_on(1);
break;
case LEFT: /* 左右键 */
case RIGHT:
if(!sub_menu_on) break;
clear_sub_menu(last_menu);
if(key==LEFT)
if(--last_menu<0) last_menu=Max_menus-1;
if(key==RIGHT)
if(++last_menu>=Max_menus) last_menu=0;
draw_sub_menu(last_menu,1);
sub_num=last_sub_num=main_menu[last_menu].last_choice;
break;
case UP: /* 上下键 */
case DOWN:
if(main_menu[last_menu].sub_menu_nums==0) break;
if(!sub_menu_on) break;
clear_roll_bar(last_menu,last_sub_num);
if(key==UP){
if(--sub_num<0)
sub_num=main_menu[last_menu].sub_menu_nums-1;
/*if((last_menu==2)){ //||(last_menu==5)){
//if((sub_num==2) ||(sub_num==4))
if(sub_num==4)
if(menu_status==32)
sub_num--;
if((sub_num==3) ||(sub_num==5))
if(menu_status==16)
sub_num--;
if(sub_num==3)
if(menu_status==0)
sub_num=sub_num-2;
}*/
if((last_menu==5)){ //上面是原来的程序段,在这里有三个子菜单项被我删除了
if(sub_num==2)
if(menu_status==32)
;// sub_num--;
if(sub_num==3)
;// sub_num--;
if(sub_num==2)
if(menu_status==0)
;// sub_num=sub_num-1;
}
}
if(key==DOWN){ //注意,这个大括号是刚加上去的
if(++sub_num>=main_menu[last_menu].sub_menu_nums)
sub_num=0;
/*if((last_menu==2)){ //||(last_menu==5)){
if((sub_num==2)||(sub_num==4))
if(menu_status==32)
sub_num++;
if((sub_num==3)||(sub_num==5))
if(menu_status==16)
sub_num++;
if(sub_num==2)
if(menu_status==0)
sub_num=sub_num+2;
}*/
if((last_menu==5)){
if(sub_num==2)
if(menu_status==32)
;// sub_num++;
if(sub_num==3)
;// sub_num++;
if(sub_num==2)
if(menu_status==0)
;// sub_num=sub_num+1;
}
}
last_sub_num=sub_num;
draw_roll_bar(last_menu,sub_num);
break;
case LEFT_MOUSE_PRESS: //当点击鼠标左键时
if(!sub_menu_on){
if(mouse_in_box(0,3,4,11,4)) {mouse_off(1);last_menu=0;//判断是否菜单一
draw_sub_menu(last_menu,1);
sub_num=last_sub_num=main_menu[last_menu].last_choice;
sub_menu_on=1;
}
else if(mouse_in_box(0,13,4,16,4)){mouse_off(1);last_menu=1;//判断是否菜单二
draw_sub_menu(last_menu,1);
sub_num=last_sub_num=main_menu[last_menu].last_choice;
sub_menu_on=1;
}
else if(mouse_in_box(0,18,4,26,4)){mouse_off(1);last_menu=2;//判断是否菜单三
draw_sub_menu(last_menu,1);
sub_num=last_sub_num=main_menu[last_menu].last_choice;
sub_menu_on=1;
}
else if(mouse_in_box(0,28,4,36,4)){mouse_off(1);last_menu=3;//判断是否菜单四
draw_sub_menu(last_menu,1);
sub_num=last_sub_num=main_menu[last_menu].last_choice;
sub_menu_on=1;
}
else if(mouse_in_box(0,38,4,46,4)){mouse_off(1);last_menu=4;//判断是否菜单五
draw_sub_menu(last_menu,1);
sub_num=last_sub_num=main_menu[last_menu].last_choice;
sub_menu_on=1;
}
else if(mouse_in_box(0,48,4,52,4)){mouse_off(1);last_menu=5;//判断是否菜单六
draw_sub_menu(last_menu,1);
sub_num=last_sub_num=main_menu[last_menu].last_choice;
sub_menu_on=1;
}
else if(mouse_in_box(0,54,4,58,4)){mouse_off(1);last_menu=6;//判断是否菜单七
draw_sub_menu(last_menu,1);
sub_num=last_sub_num=main_menu[last_menu].last_choice;
sub_menu_on=1;
}
else if(mouse_in_box(0,60,4,66,4)){mouse_off(1);last_menu=7;//判断是否菜单八
draw_sub_menu(last_menu,1);
sub_num=last_sub_num=main_menu[last_menu].last_choice;
sub_menu_on=1;
}
else if(mouse_in_box(0,69,4,74,4)){mouse_off(1);last_menu=8;//判断是否菜单九
draw_sub_menu(last_menu,1);
sub_num=last_sub_num=main_menu[last_menu].last_choice;
sub_menu_on=1;
}
mouse_on(1);break;
}
else switch(last_menu){ //判断子菜单行数而执行相应的程序,不只限于鼠标操作
case 0: //这里mouse_in_box左、上用了绝对坐标,不太好
if(mouse_in_box(0,3,6,3+sub_width[0],5+sub_menu_nums[0]))
{
mouse_txt_posn(&mousex,&mousey); //得到鼠标的文本坐标
sub_num=mousey-7; //记录用鼠标选择子菜单第几项
mouse_off(1);
clear_roll_bar(last_menu,last_sub_num); //当子菜单失去焦点时变回原来的颜色(白底黑字)
last_sub_num=sub_num;
draw_roll_bar(last_menu,sub_num); //改变得到焦点的子菜单的颜色
mouse_on(1);
key=ENTER;goto enter;
}
else {
mouse_off(1);
clear_sub_menu(last_menu);
sub_menu_on=0;mouse_on(1);
}
break;
case 1:
if(mouse_in_box(0,13,6,13+sub_width[1],5+sub_menu_nums[1]))
{
mouse_txt_posn(&mousex,&mousey);
sub_num=mousey-7;
mouse_off(1);
clear_roll_bar(last_menu,last_sub_num);
last_sub_num=sub_num;
draw_roll_bar(last_menu,sub_num);
mouse_on(1);
goto enter;
}
else {
mouse_off(1);
clear_sub_menu(last_menu);
sub_menu_on=0;mouse_on(1);
}
break;
case 2:
if (mouse_in_box(0,18,6,18+sub_width[2],5+sub_menu_nums[2]))
{
mouse_txt_posn(&mousex,&mousey);
sub_num=mousey-7;
/*if((sub_num==2)||(sub_num==4)) //这里原来的菜单项已经被删除
if(menu_status==32)
break;
if((sub_num==3)||(sub_num==5))
if(menu_status==16)
break;*/
mouse_off(1);
clear_roll_bar(last_menu,last_sub_num);
last_sub_num=sub_num;
draw_roll_bar(last_menu,sub_num);
mouse_on(1);
goto enter;
}
else {
mouse_off(1);
clear_sub_menu(last_menu);
sub_menu_on=0;mouse_on(1);
}
break;
case 3:
if(mouse_in_box(0,28,6,28+sub_width[3],5+sub_menu_nums[3]))
{
mouse_txt_posn(&mousex,&mousey);
sub_num=mousey-7;
mouse_off(1);
clear_roll_bar(last_menu,last_sub_num);
last_sub_num=sub_num;
draw_roll_bar(last_menu,sub_num);
mouse_on(1);
goto enter;
}
else {
mouse_off(1);
clear_sub_menu(last_menu);
sub_menu_on=0;mouse_on(1);
}
break;
case 4:
if(mouse_in_box(0,38,6,38+sub_width[4],5+sub_menu_nums[4]))
{
mouse_txt_posn(&mousex,&mousey);
sub_num=mousey-7;
mouse_off(1);
clear_roll_bar(last_menu,last_sub_num);
last_sub_num=sub_num;
draw_roll_bar(last_menu,sub_num);
mouse_on(1);goto enter;
}
else {
mouse_off(1);
clear_sub_menu(last_menu);
sub_menu_on=0;
mouse_on(1);
}
break;
case 5:
if(mouse_in_box(0,48,6,48+sub_width[5],5+sub_menu_nums[5]))
{
mouse_txt_posn(&mousex,&mousey);
sub_num=mousey-7;
if(sub_num==2)
if(menu_status==32)
break; //这里控制鼠标点击相应子菜单无效
if(sub_num==3)
if(menu_status==16)
break;
mouse_off(1);
clear_roll_bar(last_menu,last_sub_num);
last_sub_num=sub_num;
draw_roll_bar(last_menu,sub_num);
mouse_on(1);goto enter;
}
else {
mouse_off(1);
clear_sub_menu(last_menu);
sub_menu_on=0;
mouse_on(1);
}
break;
case 6:
if(mouse_in_box(0,54,6,54+sub_width[6],5+sub_menu_nums[6]))
{
mouse_txt_posn(&mousex,&mousey);
sub_num=mousey-7;
mouse_off(1);
clear_roll_bar(last_menu,last_sub_num);
last_sub_num=sub_num;
draw_roll_bar(last_menu,sub_num);
mouse_on(1);goto enter;
}
else {
mouse_off(1);
clear_sub_menu(last_menu);
sub_menu_on=0;mouse_on(1);
}
break;
case 7:
if(mouse_in_box(0,60,6,60+sub_width[7],5+sub_menu_nums[7]))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -