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

📄 t8.c

📁 在以前公司DOS环境下
💻 C
📖 第 1 页 / 共 3 页
字号:

 if(ikey==0)
  {strcpy(buf1,"OK");

   drwfillbox(SET,BLUE,400-21,300+3,400+21,300+19);
   drwbox(XOR,RED,400-21,300+3,400+21,300+19);
   drwstr(buf1,400-16,300+3,1,2,GREEN,XOR);
  }
 else if(ikey==1)
  {strcpy(buf1,"YES");

   drwfillbox(SET,BLUE,400-21-10-58,300+3,400-21-10,300+19);
   drwbox(XOR,RED,400-21-10-58,300+3,400-21-10,300+19);
   drwstr(buf1,400-21-10-53,300+3,1,2,GREEN,XOR);

   strcpy(buf1,"NO");

   drwfillbox(SET,BLUE,400+21+10,300+3,400+21+68,300+19);
   drwbox(XOR,RED,400+21+10,300+3,400+21+68,300+19);
   drwstr(buf1,400+21+10+13,300+3,1,2,GREEN,XOR);

  }
  
 time(&tst);
 ikey=TRUE;
 kk=0;
 while(ikey)
  {time(&ted);
   kk++;
   if(kk>2000) break;
   if(kbhit()) break;
   if(fabs(difftime(ted,tst))>0.0)
      ikey=FALSE;
  }
 pcxput(SET,x,y,tmp1);
}

int msgbox(char *msg,int ikey,int hzok)
{int ilen;
 int x,y,xn,yn;

 ilen=strlen(msg);
 if(ilen<25) ilen=25;

 x=400-ilen*4-7;
 y=300-26;
 xn=400+ilen*4+7;
 yn=300+26;

 strcpy(tmp1,"msgtmp.pcx");
 pcxmake(x,y,xn,yn,tmp1);

 drwfillbox(SET,GRAY,x,y,xn,yn);
 drwfillbox(SET,YELLOW,x+2,y+2,xn-2,yn-2);
 if(hzok==1)
  drwhzstr(msg,x+7,y+7,1,1,RED,XOR);
 else
  drwstr(msg,x+7,y+7,1,1,RED,XOR);

 if(ikey==0)
  {strcpy(buf1,"OK");

   drwfillbox(SET,BLUE,400-21,300+3,400+21,300+19);
   drwbox(XOR,RED,400-21,300+3,400+21,300+19);
   drwstr(buf1,400-16,300+3,1,2,GREEN,XOR);
  }
 else if(ikey==1)
  {strcpy(buf1,"YES");

   drwfillbox(SET,BLUE,400-21-10-58,300+3,400-21-10,300+19);
   drwbox(XOR,RED,400-21-10-58,300+3,400-21-10,300+19);
   drwstr(buf1,400-21-10-53,300+3,1,2,GREEN,XOR);

   strcpy(buf1,"NO");

   drwfillbox(SET,BLUE,400+21+10,300+3,400+21+68,300+19);
   drwbox(XOR,RED,400+21+10,300+3,400+21+68,300+19);
   drwstr(buf1,400+21+10+13,300+3,1,2,GREEN,XOR);

  }
  
 ikey=getkey();
 pcxput(SET,x,y,tmp1);
 return ikey;
}
int readstr(int x,int y,int maxlen,char *str)
{ int count,i,xn,yn;
  int f;
  int counts;
  unsigned char returnvalue;
  int x0,y0;
  char c1,strr1[3];
  int flag3;
  readbuf[1]='\0';
  
  count=0;
  countz=0;
  counts=0;
  xn=x+8*maxlen+10;
  yn=y+16+4;

  drwbox(SET,GRAY,x,y,xn-1,yn-1);
  drwbox(SET,WHITE,x+1,y+1,xn,yn);
  drwfillbox(SET,lYELLOW,x+2,y+2,xn-2,yn-2);

  f=TRUE;

  while(count<maxlen)
   { 
     flag3=TRUE;
     if ((maxlen==42)&&(f==TRUE))
	 {
	 strcpy(buffer,"输入汉字请按alt+F2(智能双拼)");
	 msg1box(buffer);
	 f=FALSE;
	} 
     if (maxlen==42)   
	{ x0=x+2+countz*16+counts*8;
	 y0=y+2;
	 xn=x0+16;
	 yn=y0+16;
	 drwfillbox(SET,RED,x0,y0,xn,yn);
	 while (flag3==TRUE)
	 {
	 returnvalue=(unsigned char)getkey();  
	 if (((returnvalue>=232)&&(returnvalue<=241))||(returnvalue==267)||(returnvalue==268)) 
	      flag3=TRUE;
	     else 
		flag3=FALSE;
		firstbyte=returnvalue;
	}
	 
	 if (firstbyte==0x1b)
	      {
	      drwfillbox(SET,lYELLOW,x+2,y+2,xn,yn); 
	      count=0;
	      counts=0;
	      countz=0;
	      str[0]='\0';
	      }
	  else if (firstbyte==0x0d)
		 { str[count]='\0';
		   return firstbyte;
		 }
	  else if (firstbyte==0x08)
	     { if((countz>0)||(counts>0))
		{if ((str[count-1]>=0)&&(str[count-1]<=127)) 
		  {  count--;
		     counts--;
		     str[count]='\0';
		     x0=x+2+countz*16+counts*8;
		     if (x0<=x+2)
			 x0=x+2+8;
		     drwfillbox(SET,lYELLOW,x0,y0,xn,yn);
		  }
		else {countz--;
		      x0=x+2+countz*16+counts*8;
		      if (x0<=x+2)
			x0=x+2+8;
		      drwfillbox(SET,lYELLOW,x0,y0,xn,yn);
		      count--;
		      count--;
		      str[count]='\0';
		     }
		}
	     }
	  else if (firstbyte==0x09)
		   return firstbyte;
	  else if ((firstbyte>=0)&&(firstbyte<=127))
		 { counts++;
		   str[count]=firstbyte;
		   strr1[0]=firstbyte;
		   strr1[1]='\0';
		   count++;
		   xn=x0+8;
		   drwstr(strr1,x0,y0,1,1,BLUE,SET);
		 }
	 else {
	       while(!CheckKeyBoard());
	       secondbyte=ReadChar();
	       str[count++]=firstbyte;
	       str[count++]=secondbyte;
	       str[count]='\0';
	       countz++;
	       strr1[0]=firstbyte;
	       strr1[1]=secondbyte;
	       strr1[2]='\0';
	       drwfillbox(SET,YELLOW,10,400,345,416);
	       drwhzstr2(strr1,10,400,1,1,BLUE,SET);
	       c1=(char)getkey();
	       switch (c1)
		{ case '0':
		    strr1[1]=(char)(secondbyte-6);
		    str[count-1]=(char)(secondbyte-6);
		    break;
		  case '1':
		    strr1[1]=(char)(secondbyte-5);
		    str[count-1]=(char)(secondbyte-5);
		    break;
		  case '2':
		    strr1[1]=(char)(secondbyte-4);
		    str[count-1]=(char)(secondbyte-4);
		    break;
		  case '3':
		    strr1[1]=(char)(secondbyte-3);
		    str[count-1]=(char)(secondbyte-3);
		    break;
		  case '4':
		    strr1[1]=(char)(secondbyte-2);
		    str[count-1]=(char)(secondbyte-2);
		    break;                          
		  case '5':
		    strr1[1]=(char)(secondbyte-1);
		    str[count-1]=(char)(secondbyte-1);
		    break;
		  case '6':
		    strr1[1]=(char)(secondbyte-0);
		    str[count-1]=(char)(secondbyte-0);
		    break;
		  case '7':
		    strr1[1]=(char)(secondbyte+1);
		    str[count-1]=(char)(secondbyte+1);
		    break;
		  case '8':
		    strr1[1]=(char)(secondbyte+2);
		    str[count-1]=(char)(secondbyte+2);
		    break;
		  case '9':
		    strr1[1]=(char)(secondbyte+3);
		    str[count-1]=(char)(secondbyte+3);
		    break;
		}  
	  
	  drwhzstr(strr1,x0,y0,1,1,BLUE,SET);    
	  drwfillbox(SET,BLACK,10,400,345,416); 
	  }
	 }
     else
     {
     x0=x+2+count*8;
     y0=y+2;
     xn=x0+8;
     yn=y0+16;
     drwfillbox(SET,RED,x0,y0,xn,yn);
     
     i=getkey();
     if(i==ESC)
      { str[0]='\0';
	return i;
      }
     else if (i==9)
	return i;    
     
     else if(i==ENTER)
      { str[count]='\0';
	return i;
      }
     else if(i==BACKSPACE)
      { if(count>0)
	 { drwfillbox(SET,lYELLOW,x0,y0,xn,yn);
	   count--;
	   str[count]='\0';
	 }
      }
     else if(i>' ')
      {str[count++]=(char)i;
       str[count]='\0';
       readbuf[0]=(char)i;
       drwstr(readbuf,x0,y0,1,1,BLUE,SET);
      }
    }
   }
  return ENTER;
}

int getkey(void)
{ union REGS in,out;
  in.h.ah=0x8;
  int86(0x21,&in,&out);
  if(out.h.al==0)
     return getkey()+128;
  else
     return out.h.al;
}

void drwstr(char *s,int x,int y,int m,int n,int col,int mode)
 { unsigned char dot[16][2];
   long offset1;
   register i,j,k,mm,nn,mask;

    while(*s)
     { offset1=(long)(*s)*16;
       s+=1;
       j=0;
       for(i=0;i<=15;i++)
	 { dot[i][j]=ASC16[offset1+i];
	   mask=0x80;
	   for(k=0;k<=7;k++)
	     {if (dot[i][j]&mask)
	       {for(nn=0;nn<n;nn++)
		 {for(mm=0;mm<m;mm++)
		  drwpoint(mode,col,x+(j*8+k)*n+nn,y+i*m+mm);
		 }
	       }
	       mask=mask>>1;
	      }
	 }
       x+=8*n;
     }

 }

 int drwhzstr(char *s,int x,int y,int m,int n,
	     int col,int mode)
 { unsigned char dot[16][2],qm,wm;
   long offset1;
   register i,j,k,mm,nn,mask;
   FILE *fpHZ;

   if((fpHZ=fopen("hzk16","rb"))==0)
     {printf("Error: HZK16 can't open.\n");
      return FALSE;
     }
   while(*s)
     { qm=(unsigned char)(s[0]-0xa0);
       s+=1;
       wm=(unsigned char)(s[0]-0xa0);

       offset1=((long)(qm-1)*94+(long)(wm-1))*32;
       s+=1;
       fseek(fpHZ,offset1,SEEK_SET);
       for(i=0;i<=15;i++)
	{for(j=0;j<2;j++)
	 { dot[i][j]=fgetc(fpHZ);
	   mask=0x80;
	   for(k=0;k<=7;k++)
	     {if (dot[i][j]&mask)
	       {for(nn=0;nn<n;nn++)
		 {for(mm=0;mm<m;mm++)
		  drwpoint(mode,col,x+(j*8+k)*n+nn,y+i*m+mm);

		 }
	       }
	       mask=mask>>1;
	     }
	  }
	}
       x+=16*n;
     }
 fclose(fpHZ);
 }

void lmtspeedinit(void)
{
 int i,j;
 double dtmp;
 FILE *fp;

 if((fp=fopen("cutoff.ini","rb"))==NULL)
   {
   printf("File CUTOFF.INI no found.Use default data.");
   iCOM=1;
   dCIR=935.0;
   dANG=75.0;
   dSYN=90.0;
   dMAX=15.0;
   dRAT=5.88;
   dACC=150.0;
   DAT=10L;
   }
 else
   {i=0;
    while(i<8)
     {if(fgets(buf1,80,fp)!=NULL)
       {if(i==0) j=atoi(buf1+6);
	   else dtmp=atof(buf1+6);

	switch(i)
	 {case 0:
	   if((j>=0)&&(j<=32)) iCOM=j;
	   else iCOM=1;
	   break;
	  case 1:
	   if(dtmp>750.0) dCIR=dtmp;
	   else dCIR=935.0;
	   break;
	  case 2:
	   if((dtmp>0.0)&&(dtmp<100.0)) dANG=dtmp;
	   else dANG=75.0;
	  case 3:
	   if((dtmp>0.0)&&(dtmp<=90.0)) dSYN=dtmp;
	   else dSYN=75.0;
	  case 4:
	   if((dtmp>0.0)&&(dtmp<100.0)) dMAX=dtmp;
	   else dMAX=15.0;
	   break;
	  case 5:
	   if((dtmp>0.0)&&(dtmp<20.0)) dRAT=dtmp;
	   else dRAT=5.88; 
	   break;
	  case 6:
	   if((dtmp>0.0)&&(dtmp<1000.0)) dACC=dtmp;
	   else dACC=150.0;
	   break;
	  case 7:
	     DAT=(long int)dtmp;
	     break;
       }
	 i++;
   }
 }
       fclose(fp);
       for(j=i;j<7;j++)
	{if(j==0) iCOM=1;
	 else if(j==1) dCIR=935.0;
	 else if(j==2) dANG=75.0;
	 else if(j==3) dSYN=90.0;
	 else if(j==4) dMAX=15.0;
	 else if(j==5) dRAT=5.88;
	 else if(j==6) dACC=150.0;
	}
  }
}
unsigned char  ReadChar(void)
{
   union REGS regs;

   regs.h.ah = 0;
   int86(0x16,&regs,&regs);
   return regs.h.al;
}

int CheckKeyBoard(void)
{
    union REGS regs;

    regs.h.ah = 1;
    int86(0x16,&regs,&regs);
    return (regs.x.cflag & 0x40) ? 0 : 1;
}
void hzstr(char *s,int x,int y)
{
  int ilen;
 
  int i,count11,count12;
  char buff[2];
  char buff1[3];
  ilen=strlen(s);
  count11=0;
  count12=0;

  for(i=0;i<ilen;i++)
  {
   if(s[i]<0)
    { buff1[0]=s[i];
      buff1[1]=s[i+1];
      buff1[2]='\0';
      i++;
      drwhzstr(buff1,x+2+count11*16+count12*8,y+4,1,1,WHITE,SET);
      count11++;
    }
   else
      if(s[i]>0)
      { buff[0]=s[i];
	buff[1]='\0';
	drwstr(buff,x+2+count11*16+count12*8,y+4,1,1,WHITE,SET);
	count12++;
      }
   }
}
int msg1box(char *msg)
{int ilen;
 int x,y,xn,yn,ikey;
 int i,count11,count12;
 char buff[2];
 char buff1[3];
 ilen=strlen(msg);
 if(ilen<25) ilen=25;
 
 count11=0;
 count12=0;

 x=400-ilen*4-7;
 y=300-26;
 xn=400+ilen*4+7;
 yn=300+26;
 
 strcpy(tmp1,"msgtmp.pcx");
 pcxmake(x,y,xn,yn,tmp1);
 
 drwfillbox(SET,GRAY,x,y,xn,yn);
 drwfillbox(SET,YELLOW,x+2,y+2,xn-2,yn-2);
 
 for(i=0;i<ilen;i++)
 {
 if (msg[i]<0)
 { buff1[0]=msg[i];
   buff1[1]=msg[i+1];
   buff1[2]='\0';
   i++;
   drwhzstr(buff1,x+15+count11*16+count12*8,y+7,1,1,RED,XOR);
   count11++;
 }
 else
    if (msg[i]>0)
    {buff[0]=msg[i];
     buff[1]='\0';
     drwstr(buff,x+15+count11*16+count12*8,y+7,1,1,RED,XOR);
     count12++;
    }
 }
 
   strcpy(buff,"OK");

   drwfillbox(SET,BLUE,400-21,300+3,400+21,300+19);
   drwbox(XOR,RED,400-21,300+3,400+21,300+19);
   drwstr(buff,400-16,300+3,1,2,GREEN,XOR);
   ikey=getkey();
   pcxput(SET,x,y,tmp1);
   return ikey;

}
int drwhzstr2(char *s,int x,int y,int m,int n,
	     int col,int mode)
 { unsigned char dot[16][2],qm,wm;
   long offset1;
   int countw;
   char l;
   char str111[2];
   register i,j,k,mm,nn,mask;
   FILE *fpHZ;

   if((fpHZ=fopen("hzk16","rb"))==0)
     {printf("Error: HZK16 can't open.\n");
      return FALSE;
     }
    l='0';
    countw=0;
    while(*s)
     { qm=(unsigned char)(s[0]-0xa1);
       s+=1;
       wm=(unsigned char)(s[0]-0xa1);
       
       while (countw<10)
       {
       str111[0]=l;
       str111[1]='.';
       str111[2]='\0';
       drwstr(str111,x,y,1,1,RED,mode);
       x=x+16;
       offset1=((long)qm*94+(long)wm+countw-6)*32;
       s+=1;
       fseek(fpHZ,offset1,SEEK_SET);
       for(i=0;i<=15;i++)
	{for(j=0;j<2;j++)
	 { dot[i][j]=fgetc(fpHZ);
	   mask=0x80;
	   for(k=0;k<=7;k++)
	     {if (dot[i][j]&mask)
	       {for(nn=0;nn<n;nn++)
		 {for(mm=0;mm<m;mm++)
		 drwpoint(mode,col,x+(j*8+k)*n+nn,y+i*m+mm);
		 }
																	       }
		mask=mask>>1;
	       }
	     }
	  }
	 countw=countw+1;
	 l=l+1;
	 x+=16*n;
	}
      
      }
    fclose(fpHZ);
 }
void SetDisplayMode(unsigned char mode)
{
   union REGS regs;

   regs.h.ah = 0;
   regs.h.al = mode;
   int86(0x10,&regs,&regs);
}
void drwbutton(char *phstr,char *str,int x,int y,PixelMode i,int col11)
{
 int k,j;
 int xn,yn;

 k=strlen(phstr);
 j=strlen(str);
 xn=x+j*8;
 yn=y+2+16+14+16+2;
  
 drwline(i,7,x,y,xn,y);
 drwline(i,7,x,y-1,xn+1,y-1);
 drwline(i,7,x,y-2,xn+2,y-2);
 drwline(i,7,x,y-2,x,yn);
 drwline(i,7,x-1,y-2,x-1,yn+1);
 drwline(i,7,x-2,y-2,x-2,yn+2);
 drwline(i,0,xn+2,y-1,xn+2,yn+2);
 drwline(i,0,xn+1,y,xn+1,yn+2);
 drwline(i,0,xn,y+1,xn,yn+2);
 drwline(i,0,x-1,yn+2,xn+2,yn+2);
 drwline(i,0,x,yn+1,xn+2,yn+1);
 drwline(i,0,x+1,yn,xn+2,yn);
 drwfillbox(i,col11,x+1,y+1,xn-1,yn-1);
 drwstr(phstr,x+(xn-x)/2-k*16/2,y+4,1,2,BLACK,i);                
 drwhzstr(str,x+2,y+2+16+14,1,1,RED,i);
}
void borrow(int x1,int x2,int y1,int y2,int col,int high)
{
 int ok;
 int xs,ys,xe,ye;
 
 ok=TRUE;
 drwfillbox(SET,col,x1,y1,x2,y2);
 xs=x2;
 ys=y1-high;
 xe=xs;
 ye=y2+high;
 while (ok)
 {
  drwline(SET,col,xs,ys,xs,ye);  
  xs=xs+1;
  ys=ys+1;
  ye=ye-1;
  if (ys==ye)
     {drwpoint(SET,col,xs,ys);  
      ok=FALSE;
     }
}   
}
int drwhzstr3(char *s,int x,int y,int m,int n,
	     int col,int mode)
 { unsigned char dot[24][3],qm,wm;
   long offset1;
   register i,j,k,mm,nn,mask;
   FILE *fpHZ;

   if((fpHZ=fopen("hzk24s.fnt","rb"))==0)
     {printf("Error: HZK24s.fnt can't open.\n");
      return FALSE;
     }
   while(*s)
     { qm=(unsigned char)(s[0]-0xa0);
       s+=1;
       wm=(unsigned char)(s[0]-0xa0);

       offset1=((long)(qm-16)*94+(long)(wm-1))*72L;
       s+=1;
       fseek(fpHZ,offset1,SEEK_SET);
       for(i=0;i<24;i++)
	{for(j=0;j<3;j++)
	 { dot[i][j]=fgetc(fpHZ);
	   mask=0x80;
	   for(k=0;k<=7;k++)
	     {if (dot[i][j]&mask)
	       {for(nn=0;nn<n;nn++)
		 {for(mm=0;mm<m;mm++)   
		 drwpoint(mode,col,x+i*2,y+(j*8+k));

		 }    
	       }  
	       mask=mask>>1;
	      }
	 }
	}
       x+=48;
     }
 fclose(fpHZ);
}           

⌨️ 快捷键说明

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