论坛: 编程破解 标题: 如何编程实现汉字字库的调用并显示? 复制本贴地址    
作者: bug_me [bug_me]    论坛用户   登录
有何函数(C语言)?



[此贴被 石狮(bug_me) 在 02月13日19时22分 编辑过]

地主 发表时间: 04-02-13 19:21

回复: bailove [bailove]   论坛用户   登录
小克
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#include "graphics.h"
#include "io.h"
#include "fcntl.h"
#include "ctype.h"
void *Rar,*em;
long quwe;
main()
{
int chr,ifp;
long length;
unsigned char data[73],fn[50];
int gmode,gdriver;
  puts("Enter LIB24-filename");
  scanf("%s",fn);
  ifp=open(fn,O_RDWR|O_BINARY);
  if(ifp==-1){cputs("err on open");exit(1);}
  if(filelength(ifp)<580000L)quwe=-1054L;
  if(filelength(ifp)>580000L&&filelength(ifp)<600000L)quwe=-95L;
  if(filelength(ifp)>600000L)quwe=161L;
  detectgraph(&gdriver,&gmode);
  if(gmode==CGAHI)gmode=CGAC0;
  initgraph(&gdriver,&gmode,"d:\\win-tc");
  arrow();
  cmcnu();
  setcolor(1);
  setbkcolor(15);
  rectangle(4,4,310,195);
  setviewport(10,10,188,188,0);
  drawcom('r',0);
  drawcom('c',0);
  drawcom('q',0);
  while((chr=getch())!='q'&chr!='Q')
  switch(chr){
  case 'r':
  case 'R':readcode(ifp,&length,data,0);
    break;
    case 'e':
    case 'E':editcode(ifp,length,data);
          break;
          }
    closegraph();
    close(ifp);
    }
    int drawcom(char c,int f)
    {
    char *a[]={"Read","Edit","Quit"};
    int i=0;
    if(c=='r'||c=='R')i=0;
    if(c=='e'||c=='E')i=1;
    if(c=='q'||c=='Q')i=2;
    setcolor(1);
    setfillstyle(SOLID_FILL,2+f);
    bar3d(240,i*40-10,300,(i+1)*40-10,0,0);
    outtextxy(260,10+40*i,a[i]);
    }


    int ggetnum(int x,int y)
    {
    char c;
    int num;


    num=0;
    setcolor(1);
    setfillstyle(SOLID_FILL,3);
    bar3d(x-5,y-5,x+53,y+20,0,0);
    outtextxy(x,y,"QQWW");
    moveto(x+8,y+10);
    while((c==getch())!='\r'&&num<999){
    if(c=='\x8'&&num>0){
    moverel(-8,0);
    bar(getx(),gety(),getx()+8,gety()+6);
    num/=num;
    continue;}
    if(isdigit(c)==0)continue;
    outtext(&c);
    num=num*10+c-48;}
    num=(num/100)*94+num%100+quwe;
    return(num);
    }

    int chat(unsigned char by[])
    {
    int i1,i2,i3,x,y;
    unsigned char c;

      clearviewport();
      setcolor(2);
      for(x=5,y=5,i1=0;i1<25;x+=7,i1++)line(x,y,x,y+168);
      for(x=5,y=5,i2=0;i2<25;y+=7,i2++)line(x,y,x+168,y);
      setcolor(2);
      setfillstyle(SOLID_FILL,2);
      for(i1=0;i1<24;i1++)
        for(i2=0;i2<3;i2++)
          for(i3=0;i3<8;i3++)
          if(getbit(by[i1*3+i2],7-i3))
          bar(5+7*i1,5+7*(i2*8+i3),12+7*i1,12+7*(i2*8+i3));
          return;
          }


  int readcode(int handle,long *l,unsigned char by[])
          {
          #include "stdio.h"
          long length;
            drawcom('r',1);
            length=72L*ggetnum(185,20);
            lseek(handle,length,SEEK_SET);
            _read(handle,by,72);
            *l=length;
            chat(by);
            drawcom('r',0);
            }


  int editcode(int handle,long length,unsigned char by[])
  {
    extern void *Rar;
    int v,x,y,k;
    unsigned char c;
    long l;
    void *gp;

    drawcom('e',1);
    setcolor(2);
    setfillstyle(SOLID_FILL,2);
    bar(200,0,205,5);
    gp=malloc(imagesize(200,0,205,7));
    getimage(200,0,205,7,gp);
    putimage(200,0,gp,XOR_PUT);
    putimage(210,110,em,XOR_PUT);
    x=y=5;
    putimage(8,8,Rar,XOR_PUT);
    while(((v=getcom())!='e')&&(v!='E'))
      switch(v){

      case 's':
      case 'S':
      lseek(handle,length,SEEK_SET);
      _write(handle,by,72);
      break;

      case 'c':
      case 'C':
      putimage(x+1,y+1,gp,XOR_PUT);
      k=getbit(by[elem(x,y)],pbit(y));
      by[elem(x,y)]=putbit(by[elem(x,y)],pbit(y),1-k);
      break;

      case 'r':
      case 'R':
      readcode(handle,&l,by);
      x=y=5;
      putimage(8,8,Rar,XOR_PUT);
      break;

      case 2:
      case 3:
      case 4:
      case 5:
      putimage(x+3,y+3,Rar,XOR_PUT);
      if(v==2)x=x==5?23*7+5:x-7;
      if(v==3)x=x==23*7+5?5:x+7;
      if(v==4)y=y==5?23*7+5:y-7;
      if(v==5)y=y==23*7+5?5:y+7;

      putimage(x+3,y+3,Rar,XOR_PUT);
      break;
      }

      putimage(x+3,y+3,Rar,XOR_PUT);
      drawcom('e',0);
      putimage(210,110,em,XOR_PUT);
      return;
      }


      int elem(int x,int y)
      {

      return((x-5)/7*3+(y-5)/7/8);
      }

      int pbit(int y)
      {
      return(7-((y-5)/7)%8);
      }

      int arrow()
      {

      extern void *Rar;
      int size;
      int raw[]={0,0,0,4,2,4,10,12,12,10,4,2,4,0,0,0};
      setfillstyle(SOLID_FILL,2);
      fillpoly(8,raw);
      size=imagesize(0,0,12,12);
      Rar=malloc(size);
      getimage(0,0,12,12,Rar);
      putimage(0,0,Rar,XOR_PUT);
      return;
      }

      int cmcnu()
      {
      extern void *em;
      int size,h,l,i;
      char *c[]={"Change","Save","Exit","Read form"};
      char *c1[]={"C","S","E","R"};

      setcolor(2);
      setfillstyle(SOLID_FILL,3);
      h=textheight("H");
      l=textwidth(c[0]);
      size=imagesize(0,0,l+40,4*h+40);

      em=malloc(size);
      bar3d(0,0,l+40,4*h+40,0,0);
      for (i=0;i<4;i++){
      setcolor(2);
      outtextxy(10,5+(h+10)*i,c[i]);
      setcolor(1);
      outtextxy(10,5+(h+10)*i,c1[i]);
      }
      getimage(0,0,l+40,4*h+40,em);
      putimage(0,0,em,XOR_PUT);
      return;
      }

      int getcom(void)
      {
      #include "bios.h"

      int key;
          while(bioskey(1)==0);
          key=bioskey(0);
          if(key==0x4b00)return(2);
          if(key==0x4d00)return(3);
          if(key==0x4800)return(4);
          if(key==0x5000)return(5);

          key &=0xff;
          return(key);
          }

    int getbit(unsigned char c,int n)
    {
    return((c>>n)&1);
    }

    int putbit(unsigned char c,int n,int m)

    {
    int i;
    if(m==0)return(c&(1<<n));
    return(c|(1<<n));
    }



[此贴被 bailove(bailove) 在 02月14日00时44分 编辑过]

B1层 发表时间: 04-02-14 00:08

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号