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

📄 bfdell.cpp

📁 吐血奉献:一套完整的DOS版软件工程
💻 CPP
📖 第 1 页 / 共 3 页
字号:
#include <dir.h>
#include <dos.h>
#include <math.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <alloc.h>
#include <string.h>
#include <graphics.h>
#include <float.h>
#include <stat.h>
#include <io.h>
#include <fcntl.h>
#define Scrn_x 20
#define Scrn_y 110
//#define IGNORE 0
//#define RETRY 1
#define ABORT 2
#include "menu_d.h"
#include "new2.h"
#include "mouse.h"
int l_number=3;
int insert=FALSE;
float l_data[20]={0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,
			 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0};
void cssz_error(int i);
struct in_struc {
  int x,y;
  char *prompt;
  char *ptr;
  int length;
  /*unsigned*/ int label_f;
  /*unsigned*/ int input_f;
  };
struct in_struc in_scrn1[20]={
 Scrn_x-4,Scrn_y+40,"请输入浓度:",NULL,6,14,14,
 Scrn_x-4,Scrn_y+56,"请输入电流:",NULL,6,14,14,
 Scrn_x-4,Scrn_y+72,"请输入浓度:",NULL,6,14,14,
 Scrn_x-4,Scrn_y+88,"请输入电流:",NULL,6,14,14,
 Scrn_x-4,Scrn_y+104,"请输入浓度:",NULL,6,14,14,
 Scrn_x-4,Scrn_y+120,"请输入电流:",NULL,6,14,14,
 Scrn_x-4,Scrn_y+136,"请输入浓度:",NULL,6,14,14,
 Scrn_x-4,Scrn_y+152,"请输入电流:",NULL,6,14,14,
 Scrn_x-4,Scrn_y+168,"请输入浓度:",NULL,6,14,14,
 Scrn_x-4,Scrn_y+184,"请输入电流:",NULL,6,14,14,
 Scrn_x-4,Scrn_y+200,"请输入浓度:",NULL,6,14,14,
 Scrn_x-4,Scrn_y+216,"请输入电流:",NULL,6,14,14,
 Scrn_x-4,Scrn_y+232,"请输入浓度:",NULL,6,14,14,
 Scrn_x-4,Scrn_y+248,"请输入电流:",NULL,6,14,14,
 Scrn_x-4,Scrn_y+264,"请输入浓度:",NULL,6,14,14,
 Scrn_x-4,Scrn_y+280,"请输入电流:",NULL,6,14,14,
 Scrn_x-4,Scrn_y+296,"请输入浓度:",NULL,6,14,14,
 Scrn_x-4,Scrn_y+312,"请输入电流:",NULL,6,14,14,
 Scrn_x-4,Scrn_y+328,"请输入浓度:",NULL,6,14,14,
 Scrn_x-4,Scrn_y+344,"请输入电流:",NULL,6,14,14,
 };
struct in_struc in_scrn2[1]={
 Scrn_x-4,Scrn_y-14,"请输入次数:",NULL,2,14,14,
 };
struct in_struc in_scrn3[1]={
 Scrn_x-4,392,"请输入电流:",NULL,6,14,14,
 };
char get_fld(char *string,int inlength,int start,int nx,int bx,int M_right,int M_left,int M_top);
void board(int left,int top,int right,int bottom,int leavel,int color);

static char *err_msg[]={
  "write protect",
  "unknown unit",
  "drive not ready",
  "unknown command",
  "data error(CRC)",
  "bad request",
  "seek error",
  "unknown media type",
  "sector not found",
  "printer out of paper",
  "write fault",
  "read fault",
  "general failure",
  "reserved",
  "reserved",
  "invalid disk change"
  };
void error_win(char *msg)
  {
  printf("%s",msg);
  }
int handler(int errval,int ax,int bp,int si)
  {
  static char msg[80];
  unsigned di;
  int drive;
  int errorno;
  di=_DI;
  if(ax<0){
    error_win("Device error");
    hardretn(ABORT);
    }
  drive=ax&0x00ff;
  errorno=di&0x00ff;
  hardretn(ABORT);
  sprintf(msg,"Error:%s on drive %c\r\n",err_msg[errorno],'A'+drive);
  error_win(msg);
  return ABORT;
  }
int getbit(unsigned char c,int n)
  {
  return((c>>n)&1);
  }
void outcc(int x,int y,int nm,int color)
  {
  unsigned int wei;
  unsigned int qu;
  int j,i1,i2,i3,rec;
  long addr;
  char font[32];
  FILE *fp;
  fp=fopen("hzk16","rb");
  if(fp==NULL)
   {
   closegraph();
   cputs("error on open hzk16");
   getch();
   exit(1);
   }
    qu=(nm&0xff)-0xa0;
    wei=((nm&0xff00)>>8)-0xa0;
    rec=(qu-1)*94+wei-1;
    addr=rec*32l;
    fseek(fp,addr,SEEK_SET);
    fread(font,sizeof(char),32,fp);
    for(i1=0;i1<16;i1++)
     for(i2=0;i2<2;i2++)
      for(i3=0;i3<8;i3++)
	if(getbit(font[i1*2+i2],7-i3))
	  putpixel(x+i2*8+i3,y+i1,color);
  fclose(fp);
  return;
  }
void outchxy(int x,int y,char ch,int color)
  {
  char b[2];
  setcolor(color);
  sprintf(b,"%c",ch);
  outtextxy(x,y,b);
  }
void disp_hz_str(int x,int y,char *s,int color)
  {
  while(*s)
  if((*s&0x80)&&(*(s+1)&0x80))
   {
   outcc(x,y,*(int*)s,color);
   s+=2;
   x=x+17;
   }
  else
   {
   outchxy(x,y+4,*s,color);s++;x=x+9;
   }
  }
void disp_shadow_str(int x,int y,char *s,int color)
  {
  int wd=1;
  while(*s)
  if((*s&0x80)&&(*(s+1)&0x80))
   {
   outcc(x+1,y+1,*(int*)s,15);
   outcc(x,y,*(int*)s,color);
   s+=2;
   x=x+wd+16;
   }
  else
   {
   outchxy(x+1,y+5,*s,15);
   outchxy(x,y+4,*s,color);
   s++;x=x+wd+8;
   }
  }
void Initialize(void)
{
   int gdriver = VGA, gmode=VGAHI, errorcode;
   struct palettetype pal;
   int i, ht, y,x,j;
   initgraph(&gdriver, &gmode, "");
   errorcode = graphresult();
   if (errorcode != grOk)
   {
      printf("Graphics error: %s\n", grapherrormsg(errorcode));
      printf("Press any key to halt:");
      //getch();
      exit(1);
   }
   getpalette(&pal);
   for (i=1; i<pal.size-7; i++)
     setrgbpalette(pal.colors[i], i*4+16, i*4+16, i*4+16);
   setrgbpalette(pal.colors[10], 18, 882, 36);
 }
void copy(char *from,char *to,int first,int length)
  {
  int i;
  if(first<0) return;
  if((first+length+1)>strlen(from))
    length=strlen(from)+first+1;
  for(i=0;i<length;i++)
    to[i]=from[(first)+i];
    to[i]='\0';
 return;
  }
void chip_left(char *chip,char *block,int number)
  {
  char temp[32];
  strcpy(chip,"\0");
    if(number<1)
      return;
    if(number>strlen(block))
      number=strlen(block);
    strcpy(temp,block);
    copy(block,chip,0,number);
    copy(block,temp,number,(strlen(block)-number));
    strcpy(block,temp);
  }
void chip_right(char *chip,char *block,int number)
  {
  char temp[32];
  strcpy(chip,"\0");
  if(number<1||number>strlen(block)) return;
  copy(block,chip,strlen(block)-number,number);
  copy(block,temp,0,strlen(block)-number);
  strcpy(block,temp);
  return;
  }
void trim_left(char *string)
  {
  int i=0; int j=0;
  if(!strlen(string)) return;
  while(string[i]==' '&&string[i]!='\0') i++;
  while(string[i]!='\0') string[j++]=string[i++];
  string[j]='\0';
  }
void trim_right(char *string)
  {
  int pos;
  pos=strlen(string)-1;
  while(string[pos]==' ')
    {
    string[pos--]='\0';
    if(pos<0)
    break;
    }
  }
void get_key(char *ch,int *ext)
  {
  *ch=getch();
  if(!*ch) *ext=getch();
  }
void wherexy(int *x,int *y)
  {
  *x=getx(); *y=gety();
  return;
  }
/*
int val_field(char *string)
  {
  int i=0;
  while(string[i]!='\0')
    {
    if(string[i]!='e'&&string[i]!='E'&&string[i]!='-'&&string[i]!=
       '0'&&string[i]!='1'&&string[i]!='2'&&string[i]!='3'&&string[i]
       !='4'&&string[i]!='5'&&string[i]!='6'&&string[i]!=
       '7'&&string[i]!='8'&&string[i]!='9'&&string[i]!=
       '.'&&string[i]!=' '&&string[i]!='d'&&string[i]!='a'&&string[i]!=
       't'&&string[i]!='*')
       return(0);
    i++;
    }
  return(1);
  }*/
void hilight(int x,int y)
  {
  void *cursor;
  cursor=(void *)(malloc(imagesize(x,y+textheight("D"),x+textwidth("D"),
		  y+textheight("D")+1)));
  getimage(x,y+textheight("D"),x+textwidth("D"),y+textheight("D")+1,cursor);
  putimage(x,y+textheight("D"),cursor,NOT_PUT);
  free(cursor);
  cursor=NULL;
  return;
  }
int miti_fld(struct in_struc in_scrn[],int nx,int M_right,int M_left,int M_top)
  {
  int number=0;
  int i,j,x,y,savebkcolor;
  char temp_attr;
  int val_code;
  int ext;
  BOY_MOUSE_TYPE(1);
  for(;;)
    {
    if((in_scrn[number++].x==0)||(number>nx)) break;
    if(number==10000) return(1);
    }
  number--;
  for(i=0;i<number;i++)
    {
    x=in_scrn[i].x;
    y=in_scrn[i].y;
    disp_hz_str(x,y-4,in_scrn[i].prompt,in_scrn[i].label_f);
    x=x+strlen(in_scrn[i].prompt)*8+10;
    setcolor(in_scrn[i].input_f);
    outtextxy(x,y,in_scrn[i].ptr);
    }
  i=0;
  setfillstyle(1,9);
  bar(30,5,62,21);
  if(insert) disp_hz_str(30,5,"插入",15);
  else disp_hz_str(30,5,"覆盖",15);
  while(1)
    {
    setcolor(in_scrn[i].input_f);
    x=in_scrn[i].x;
    y=in_scrn[i].y;
    x=x+strlen(in_scrn[i].prompt)*8+10;
      moveto(x,y);
      ext=get_fld(in_scrn[i].ptr,in_scrn[i].length,0,nx,i,M_right,M_left,M_top);
      if(ext<=0){
	i=ext*(-1);
	}
      if(ext==ESCAPE) break;
      if((ext==DOWN)||(ext==RETURN)) i++;
      if(ext==UP) i--;
      else if(ext==ESCAPE||ext==PGUP||ext==PGDN) break;
      if(i==number&&ext==RETURN)
	{
	ext=RETURN;
	break;
	}
      if(i<0) i=number-1;
      if(i>(number-1)) i=0;
    }
  setfillstyle(1,9);
  bar(30,5,62,21);
  BOY_MOUSE_TYPE(0);
  return ext;
  }
void cssz_error(int i)
  {
  char *error_str[13]={
       "富集电位:-1400~200mv",
       "富集时间:0~9999s",
       "起始电位:-1400~200mv",
       "终止电位:-1400~200mv",
       "脉冲增量:1~100mv",
       "脉冲宽度:1~100ms",
       "间隔时间:1~32s",
       "斜率增量:1~16mv",
       "清洗电压:-1400~200mv",
       "清洗时间:0~9999s",
       "静止时间:0~9999s",
       "扫描档位:1~12",
       "档位倍率:1~5",
       };
  button(error_str[i],0,0,1,0);
  return;
  }
int miti_fld1(struct in_struc in_scrn[],int nx,int M_right,int M_left,int M_top)
  {
  int number=0;
  int i,j,x,y,savebkcolor;
  char temp_attr;
  int val_code;
  int ext;
  BOY_MOUSE_TYPE(1);
  for(;;)
    {
    if((in_scrn[number++].x==0)||(number>nx)) break;
    if(number==10000) return(1);
    }
  number--;
  for(i=0;i<number;i++)
    {
    x=in_scrn[i].x;
    y=in_scrn[i].y;
    val_code=atoi(in_scrn[i].ptr);
    if((val_code<in_scrn[i].label_f)||(val_code>in_scrn[i].input_f))
      disp_hz_str(x,y-4,in_scrn[i].prompt,12);
    else disp_hz_str(x,y-4,in_scrn[i].prompt,15);
    x=x+strlen(in_scrn[i].prompt)*8+10;
    setcolor(15);
    outtextxy(x,y,in_scrn[i].ptr);
    }
  i=0;
  setfillstyle(1,9);
  bar(30,5,62,21);
  if(insert) disp_hz_str(30,5,"插入",15);
  else disp_hz_str(30,5,"覆盖",15);
  while(1)
    {
    setcolor(15);
    x=in_scrn[i].x;
    y=in_scrn[i].y;
    x=x+strlen(in_scrn[i].prompt)*8+10;
      moveto(x,y);
      ext=get_fld(in_scrn[i].ptr,in_scrn[i].length,0,nx,i,M_right,M_left,M_top);
      val_code=atoi(in_scrn[i].ptr);
      if((val_code<in_scrn[i].label_f)||(val_code>in_scrn[i].input_f)){
	disp_hz_str(Scrn_x,y-4,in_scrn[i].prompt,12);
	cssz_error(i);
	}
      else disp_hz_str(Scrn_x,y-4,in_scrn[i].prompt,15);
      if(ext<=0){
	i=ext*(-1);
	}
      if(ext==ESCAPE) break;
      if((ext==DOWN)||(ext==RETURN)) i++;
      if(ext==UP) i--;
      else if(ext==ESCAPE||ext==PGUP||ext==PGDN) break;
      if(i==number&&ext==RETURN)
	{
	ext=RETURN;
	break;
	}
      if(i<0) i=number-1;
      if(i>(number-1)) i=0;
    }
  setfillstyle(1,9);
  bar(30,5,62,21);
  BOY_MOUSE_TYPE(0);
    return ext;
  }
char get_fld(char *string,int inlength,int start,int nx,int bx,int M_right,int M_left,int M_top)
  {
  char *bk_erase;
  int width;
  char left[32],right[32],chip[32];
  char ch;
  int ext2=1;
  int i,x,y,orig_x,orig_y;
  int letter=0,len_left=0,len_right=0;
  int p1=0,p2=0,p3=0;
  unsigned size;
  int return_code,ret_code;
  int judge=0;
  wherexy(&orig_x,&orig_y);

⌨️ 快捷键说明

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