HZK24.H
资源名称:8 [点击查看]
上传用户:phillytech
上传日期:2007-01-07
资源大小:561k
文件大小:1k
源码类别:

多国语言处理

开发平台:

DOS

  1.    ////////////////////////////////////
  2.   //  西文状态下实现汉字输出 (hzk24)//
  3.  //  hzk24.h  郁明 F_FIRE@990.net  //
  4. ////////////////////////////////////
  5. #include <stdlib.h>
  6. #include <stdio.h>
  7. #include <graphics.h>
  8. #include <string.h>
  9. #define HZK24c "hzk24k"
  10. #define HZK24t "hzk24t"
  11. int test(unsigned int a,int k)
  12. {
  13. a<<=(k-1);
  14. if(a&0x80)
  15. return (1);
  16. else
  17. return (0);
  18. }
  19. void hz24(int X,int Y,char *zw,int c)
  20. {
  21.    register unsigned int n=0;
  22.    while(n!=strlen(zw)){  register unsigned int i=0,j=0,l=0;
  23. register unsigned long xx=0;
  24. register unsigned long yy=0;
  25. FILE *fp;char *wm; register unsigned long num=0;
  26. if((zw[n]&0x80)==0)
  27.        {if(zw[n]==' '){X=X+24;yy=0;n++;}else{
  28.        fp=fopen(HZK24t,"rb++");
  29. if(fp==NULL){exit(0);}
  30.   num=188+zw[n]-33;
  31.   fseek(fp,(72)*num,0);
  32.   fread(wm,72,1,fp);
  33.   fclose(fp);
  34.      for(i=0;i<24;i++)
  35.    {
  36.       for(j=0;j<3;j++)
  37.  {for(l=1;l<=8;l++)
  38.   if(test(wm[i*3+j],l)==1)
  39.    {putpixel((X+xx),(Y+yy),c);yy++;}
  40.     else{yy++;}
  41.  }
  42.    X++;yy=0;}
  43.          n+=1;}
  44.  }else{
  45.  fp=fopen(HZK24c,"rb++");
  46.  if(fp==NULL){exit(0);}
  47.  zw[n]=zw[n]-0xa0-15;
  48.  zw[n+1]=zw[n+1]-0xa0;
  49.  num=(zw[n]-1)*94+(zw[n+1]-1);
  50.  fseek(fp,(72)*num,0);
  51.  fread(wm,72,1,fp);
  52.  fclose(fp);
  53.   for(i=0;i<24;i++)
  54.    {
  55.       for(j=0;j<3;j++)
  56.  {for(l=1;l<=8;l++)
  57.   if(test(wm[i*3+j],l)==1)
  58.    {putpixel((X+xx),(Y+yy),c);yy++;}
  59.     else{yy++;}
  60.  }
  61.    X++;yy=0;
  62.     }
  63. n+=2;yy=0;}
  64. }
  65. }