⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 2004g.c

📁 这是功能强大的磁盘维护工具 能读写任意扇区 备份重要数据
💻 C
📖 第 1 页 / 共 2 页
字号:
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 + -