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

📄 menu_1.cpp

📁 吐血奉献:一套完整的DOS版软件工程
💻 CPP
📖 第 1 页 / 共 5 页
字号:
#include <dos.h>
#include <math.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <alloc.h>
#include <bios.h>
#include <string.h>
#include <graphics.h>
#include <time.h>
#include <io.h>
#include <float.h>
#include <stat.h>
#include <fcntl.h>
#include <dir.h>
#include "mouse.h"
#include "menu_d.h"
#include "new2.h"
struct setpara {
 int fuji_v;
 int fuji_t;
 int first_v;
 int end_v;
 int pulse;
 int p_width;
 int t_width;
 int slope;
 int brush_v;
 int brush_t;
 int stat_t;
 int sel_R;
 int sel_bl;
 } spara;
struct ivpointer{
 float current;
 float insist;
 int scan_v;
 }ivp[1802];
struct ivdiffrance{
 float current;
 int scan_v;
 }ivd[1804];
struct ivtop{
 float current[100];
 int scan_v[100];
 }ivtop;
struct wpeak{
 float current;
 int scan_v;
 }wp[100];
int pi;
struct wbottm{
 float current;
 int scan_v;
 }wb[100];
struct date d;
struct time t;
struct temp_d{
 int te_year;
 int te_day;
 int te_mon;
}te_d;
struct temp_t{
 int te_hour;
 int te_min;
 int te_sec;
}te_t;
float insist_set[16]={232,472,942,2442,4842,9942,24942,51042,
100942,200942,350942,620942,1090942,2090942,4090942,6790942};
float insist,max;
int count,con1,con2;
int max_num;
int mouse_test_sign=0;
int step;
int sub_num[7]={4,4,3,3,2,4,2};
int flag=FALSE;
int mc_flag=0;
float cur_flag=1000;
char *filename[1]={"*.lin           ",};
int rate_flag=3;
struct ssys{
  int prn;
  int IE;
  int QD;
  int SM;
  }sz_sys;
extern struct pd_str m_menu[MAIN_OPT]={
 "系统维护",
	      help_0,
	      "参数设置",
	      "系统时钟",
	      "DOS命令",
	      "退出系统",
	      "",
	      "",
			   cssz,
			   jp_clock,
			   shell,
			   exit_con,
			   0,
			   0,
 "测试方法",
	   help_1,
	      "差示脉冲溶出",
	      "差示脉冲伏安",
	      "线性扫描伏安",
	      "循环扫描伏安",
	      "",
	      "",
			   scrc,
			   scmc,
			   smfa,
			   xhfa,
			   0,
			   0,
 "校准方法",
	  help_2,
	      "双标类推法",
	      "外推加入法",
	      "校准曲线法",
	      "",
	      "",
	      "",
			   sblt,
			   bzjr,
			   gzqx,
			   0,
			   0,
			   0,
 "文件调用",
	   help_3,
	      "测试曲线",
	      "校准数据",
	      "当前曲线",
	      "",
	      "",
	      "",
			   scrn_diao,
			   spara_diao,
			   just_scrn,
			   0,
			   0,
			   0,
 "文件存盘",
	  help_4,
	      "测试曲线",
	      "校准数据",
	      "",
	      "",
	      "",
	      "",
			   scrn_cun,
			   spara_cun,
			   0,
			   0,
			   0,
			   0,
 " 打  印 ",
	   help_6,
	      "测试曲线",
	      "求导曲线",
	      "校准曲线",
	      "窗口内容",
	      "",
	      "",
			   IE_line,
			   QD_line,
			   JZ_line,
			   print_win,
			   0,
			   0,
 "硬件检测",
	  help_5,
	      "分析卡检测",
	      "工作台检测",
	      "",
	      "",
	      "",
	      "",
			   xtzj,
			   gztzj,
			   0,
			   0,
			   0,
			   0,
 };
int m_sign;
int sub_left,sub_top,M_Pointer=0,S_Pointer=0;
unsigned int size;
void far *buffer=(void far *)0xA0000000;
void print_win()
  {
  int p_flag=0;
  int col1,col2,col3;
  col1=getpixel(206,420);
  col2=getpixel(208,460);
  col3=getpixel(208,456);
  if((col1==8)&&(col2==8)&&(col3==8)){
    file_warn(9);
    return;
    }
  p_flag=print_test();
  if(p_flag<0) return;
  if(col1!=8) print_2(12,60,630,470+25*sz_sys.prn,col1,14);
  else if(col3!=8) print_2(12,60,630,470+25*sz_sys.prn,col3,col3);
  else print_2(12,60,630,470+25*sz_sys.prn,col2,col2);
  return;
  }
void save_win(int left,int top,int right,int bottom)
  {
  sub_left=left;
  sub_top=top;
  size=imagesize(left,top,right,bottom);
  buffer=malloc(size);
  getimage(left,top,right,bottom,buffer);
  }
void gun_pop()
  {
  putimage(sub_left,sub_top,buffer,COPY_PUT);
  farfree(buffer);
  flag=FALSE;
  }
void submenu(int left,int top,int right,int bottom,int color)
  {
  int i,j;
  save_win(left,top,right,bottom);
  setfillstyle(SOLID_FILL,color-3);
  bar(left,top,right,bottom);
  setfillstyle(SOLID_FILL,color-1);
  bar(left+4,top+4,right-4,bottom-4);
  setcolor(14);
  setlinestyle(0,1,1);
  rectangle(left+2,top+2,right-2,bottom-2);
  rectangle(left+4,top+4,right-4,bottom-4);
  for(j=0;j<sub_num[M_Pointer];j++){
    setfillstyle(SOLID_FILL,15);
    for (i=3; i<5; i++)
	{
	setcolor(15);
	line(left+15-i,top+16+j*26-i,left+110+i,top+16+j*26-i);
	line(left+15-i,top+16+j*26-i,left+15-i,top+16+j*26+16+i);
	setcolor(i);
	line(left+110+i,top+16+j*26-i,left+110+i,top+16+j*26+16+i);
	line(left+15-i,top+16+j*26+16+i,left+110+i,top+16+j*26+16+i);
	}
   disp_shadow_str(left+14,top+18+j*26,m_menu[M_Pointer].sub[j],0);
   }
 flag=TRUE;
 }
void mouse_test(int c)
   {
   if(c>=8){
     if(c==8) exit_con();
     //else sys_win(2,24,80,90);
     c=M_Pointer;
     return;
     }
   else M_Pointer=c;
   pull_bar(m_sign+2,3+step,m_sign+76,31+step);
   m_sign=4+c*88;
   push_bar(m_sign+2,3+step,m_sign+76,31+step);
   while(BOY_MOUSE_BUTTON()!=0);
   if(flag==TRUE) gun_pop();
   if(S_Pointer>=sub_num[M_Pointer]) S_Pointer=sub_num[M_Pointer]-1;
   submenu(m_sign-4*M_Pointer,36+step,m_sign+124-4*M_Pointer,sub_num[M_Pointer]*26+54+step,8);
   push_bar(m_sign-4*M_Pointer+9,S_Pointer*26+46+step,m_sign+116-4*M_Pointer,S_Pointer*26+74+step);
   }
void mouse_sub_test(int c)
  {
  pull_bar(m_sign-4*M_Pointer+9,S_Pointer*26+46+step,m_sign+116-4*M_Pointer,S_Pointer*26+74+step);
  if(c>=8){
     if(c==8) exit_con();
     //else sys_win(2,24,80,90);
     c=S_Pointer;
     }
  else S_Pointer=c;
  push_bar(m_sign-4*M_Pointer+9,S_Pointer*26+46+step,m_sign+116-4*M_Pointer,S_Pointer*26+74+step);
  while(BOY_MOUSE_BUTTON()!=0);
  gun_pop();
  m_menu[M_Pointer].fun[S_Pointer]();
  if(S_Pointer>=sub_num[M_Pointer]) S_Pointer=sub_num[M_Pointer]-1;
  submenu(m_sign-4*M_Pointer,36+step,m_sign+124-4*M_Pointer,sub_num[M_Pointer]*26+54+step,8);
  push_bar(m_sign-4*M_Pointer+9,S_Pointer*26+46+step,m_sign+116-4*M_Pointer,S_Pointer*26+74+step);
  return;
  }
int flag_test()
  {
  if(flag==FALSE) return(-1);
  else return(M_Pointer);
  }
int quit()
  {
  BOY_MOUSE_HIDE();
  if(flag==FALSE) m_menu[M_Pointer].m_help();
  else{
      gun_pop();
      m_menu[M_Pointer].m_help();
      submenu(m_sign-4*M_Pointer,36+step,m_sign+124-4*M_Pointer,sub_num[M_Pointer]*26+54+step,8);
      push_bar(m_sign-4*M_Pointer+9,S_Pointer*26+46+step,m_sign+116-4*M_Pointer,S_Pointer*26+74+step);
      }
  BOY_MOUSE_VIEW();
  return(-1);
  }
void ret_Main()
  {
  int i;
  char *str[7];
  for(i=0;i<=6;i++)
    str[i]=m_menu[i].main;
  Main_board(str);
  push_bar(m_sign+2,3+step,m_sign+76,31+step);
  return;
  }
void shell(void)
  {
  struct viewporttype vp;
  int mode;
  getviewsettings( &vp );
  mode = getgraphmode();
  restorecrtmode();
  printf("Type exit or EXIT  return \n");
  system("");
  setgraphmode( mode );
  ret_Main();
  return;
  }
void bios_test(int c)
  {
  if(flag==FALSE){
    switch(c){
      case 19712:
		 pull_bar(m_sign+2,3+step,m_sign+76,31+step);
		 M_Pointer++;
		 if(M_Pointer>6){
		   M_Pointer=0;
		   m_sign=4;
		   push_bar(m_sign+2,3+step,m_sign+76,31+step);
		   }
		 else{
		   pull_bar(m_sign+2,3+step,m_sign+76,31+step);
		   m_sign+=88;
		   push_bar(m_sign+2,3+step,m_sign+76,31+step);
		   }
		 break;
     case 19200:
		pull_bar(m_sign+2,3+step,m_sign+76,31+step);
		M_Pointer--;
		 if(M_Pointer<0){
		   M_Pointer=6;
		   m_sign=532;
		   push_bar(m_sign+2,3+step,m_sign+76,31+step);
		   }
		 else{
		   pull_bar(m_sign+2,3+step,m_sign+76,31+step);
		   m_sign-=88;
		   push_bar(m_sign+2,3+step,m_sign+76,31+step);
		   }
		 break;
    case 7181:
		submenu(m_sign-4*M_Pointer,36+step,m_sign+124-4*M_Pointer,sub_num[M_Pointer]*26+54+step,8);
		push_bar(m_sign-4*M_Pointer+9,S_Pointer*26+46+step,m_sign+116-4*M_Pointer,S_Pointer*26+74+step);
		break;
    case 20480:
		submenu(m_sign-4*M_Pointer,36+step,m_sign+124-4*M_Pointer,sub_num[M_Pointer]*26+54+step,8);
		push_bar(m_sign-4*M_Pointer+9,S_Pointer*26+46+step,m_sign+116-4*M_Pointer,S_Pointer*26+74+step);
		break;
    case 20736://PgDn
		smaller();
		break;
    case 18688://PgUp
		bigger();
		break;
    case 20011:
		add_line(1,10);
		break;
    case 3389:
		add_line(1,100);
		break;
    case -32000:
		add_line(1,1);
		break;
    case 18989:
		add_line(0,10);
		break;
    case 3117:
		add_line(0,100);
		break;
    case -32256:
		add_line(0,1);
		break;
    case 15104: //F1
		m_menu[M_Pointer].m_help();
		break;
    case 15360://F2
		scrn_cun();
		break;
    case 15616://F3
		scrn_diao();
		break;
    case 26880://ALT+F2
		spara_cun();
		break;
    case 27136://ALT+F3
		spara_diao();
		break;
    case 24320://Ctrl+F2
		spara_cun();
		break;
    case 24576://Ctrl+F3
		spara_diao();
		break;
    case 15872://F4
		m_menu[0].fun[0]();
		break;
    case 16128://F5
		exit_con();
    case 16384://F6
		cls_all_scrn();
		break;
    case 16640: //F7
		just_QD();
		break;
    case 16896: //F8
		print_win();
		break;
/*    case 17152://F9
		cls_all_scrn();
		brush();
		break;*/
/*    case 17408: //F10
		sys_win(2,24,80,90);
		break;*/
    case 3849:
		tab_bigger();
		break;
     }
    }
    else{
    switch(c){
      case 19712:
		 pull_bar(m_sign+2,3+step,m_sign+76,31+step);
		 M_Pointer++;
		 gun_pop();
		 if(M_Pointer>6){
		   M_Pointer=0;
		   m_sign=4;
		   push_bar(m_sign+2,3+step,m_sign+76,31+step);
		   }
		 else{
		   pull_bar(m_sign+2,3+step,m_sign+76,31+step);
		   m_sign+=88;
		   push_bar(m_sign+2,3+step,m_sign+76,31+step);
		   }
		if(S_Pointer>=sub_num[M_Pointer]) S_Pointer=sub_num[M_Pointer]-1;
		  submenu(m_sign-4*M_Pointer,36+step,m_sign+124-4*M_Pointer,sub_num[M_Pointer]*26+54+step,8);
		  push_bar(m_sign-4*M_Pointer+9,S_Pointer*26+46+step,m_sign+116-4*M_Pointer,S_Pointer*26+74+step);
		 break;
     case 19200:
		pull_bar(m_sign+2,3+step,m_sign+76,31+step);
		M_Pointer--;
		gun_pop();
		if(M_Pointer<0){
		   M_Pointer=6;
		   m_sign=532;
		   push_bar(m_sign+2,3+step,m_sign+76,31+step);
		   }
		 else{
		   pull_bar(m_sign+2,3+step,m_sign+76,31+step);
		   m_sign-=88;
		   push_bar(m_sign+2,3+step,m_sign+76,31+step);
		   }
		if(S_Pointer>=sub_num[M_Pointer]) S_Pointer=sub_num[M_Pointer]-1;
		submenu(m_sign-4*M_Pointer,36+step,m_sign+124-4*M_Pointer,sub_num[M_Pointer]*26+54+step,8);
		push_bar(m_sign-4*M_Pointer+9,S_Pointer*26+46+step,m_sign+116-4*M_Pointer,S_Pointer*26+74+step);
		 break;
     case 18432: /*UP*/
		pull_bar(m_sign-4*M_Pointer+9,S_Pointer*26+46+step,m_sign+116-4*M_Pointer,S_Pointer*26+74+step);
		if(S_Pointer<=0) S_Pointer=sub_num[M_Pointer]-1;
		else S_Pointer--;
		push_bar(m_sign-4*M_Pointer+9,S_Pointer*26+46+step,m_sign+116-4*M_Pointer,S_Pointer*26+74+step);
		break;
     case 20480: /*DN*/
		pull_bar(m_sign-4*M_Pointer+9,S_Pointer*26+46+step,m_sign+116-4*M_Pointer,S_Pointer*26+74+step);
		if(S_Pointer>=sub_num[M_Pointer]-1) S_Pointer=0;
		else S_Pointer++;
		push_bar(m_sign-4*M_Pointer+9,S_Pointer*26+46+step,m_sign+116-4*M_Pointer,S_Pointer*26+74+step);
		break;
     case 18176: /*Home*/
		pull_bar(m_sign-4*M_Pointer+9,S_Pointer*26+46+step,m_sign+116-4*M_Pointer,S_Pointer*26+74+step);
		S_Pointer=0;
		push_bar(m_sign-4*M_Pointer+9,S_Pointer*26+46+step,m_sign+116-4*M_Pointer,S_Pointer*26+74+step);
		break;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -