论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > C语言程序设计教程
Tag:新手,函数,指针,数据类型,对象,Turbo,入门,运算符,数组,结构,二级,,tc,游戏,试题,问答,编译,视频教程

256色汉字显示程序

文章类别:C语言程序设计 | 发表日期:2008-9-24 14:42:50

/*
    CC256.C -- 256色汉字显示程序
*/
#include "dos.h"
#include "stdio.h"
#include "conio.h"

FILE *fp;

void OpenLIB(void);
void CC256(int, int, int, char *Str);
void ErrMsg();
void InitScr();
void RstScr();
void PutPoint(int x, int y, int Color);
void Quit();

int main(void)
{
    char *Str = "谢谢您使用本书";
    OpenLIB();
    InitScr();
    CC256(70, 80, 2, Str);
    getch();
    Quit();
    return 0;
}

void InitScr()
{
    union REGS In;
    In.x.ax = 0x13;                 /*进入13H模式  */
    int86(0x10, &In, &In);
}

void RstScr()
{
    union REGS In;
    In.x.ax = 0x03;             /* 退出13H模式 */
    int86(0x10, &In, &In);
}

void OpenLIB(void)    /* 打开24点阵宋体字库 */
{
    if ((fp = fopen("c:\\ucdos\\clib24s", "rb")) == NULL) ErrMsg();
}

void CC256(int x, int y, int Wid, char *Str)
{
   unsigned  Zcode, Bcode;                    /* 区码, 位码 */
   int  i, j, k, Rec, Color;
   long Len;
   char Buf[72];
   while (*Str)                               /* 直到字串显示完 */
   {
      if ((*Str & 0x80) && (*(Str+1) &0x80))  /* 是汉字 */
      {
  Zcode = (*Str-0xa1) & 0x07f;          /* 区码 */
  Bcode = (*(Str+1)-0xa1) & 0x07f;      /* 位码 */
  Rec = Zcode*94+Bcode;                 /* 记录号 */
  Len = Rec*72L;                        /* 在字库中位置 */
  fseek(fp, Len, SEEK_SET);
  fread (Buf, 1, 72, fp);               /* 72字节 */
  for (i = 0; i < 24; i++)
     for (j = 0; j < 3; j++)
        for (k = 0; k < 8; k++)
    if (Buf[i*3+j] >> (7-k) & 1)
    {
       Color = y+j*8+k-46;
       PutPoint(x+i, y+j*8+k, Color);
    }
  x = x+24+Wid;
  Str += 2;
      }
   }
   return;
 }

/* 直接写视频缓冲区 */
void PutPoint(int x, int y, int Color)   /* 画点函数 */
{
   char far *p;
   p = (char far *) (0x0a0000000L);
   * (x+y*320+p) = Color;
}

void Quit()
{
    RstScr();
    fcloseall();
}

void ErrMsg()
{
    printf("Open LIB File Error!");
    getch();
    Quit();
}

视频教程列表
文章教程搜索
 
C语言程序设计推荐教程
C语言程序设计热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058