庞大资源库的计算机教程网站!
设为首页
加入收藏
总编信箱
投稿或申请专栏请先 [登 陆]
首页 操作系统 程序设计 图形图像 媒体动画 机械电子 WEB开发 数 据 库 办公系列 路由技术 网络原理 网络应用
认证考试 安全技术
首页>操作系统>Linux>编程开发>正文
资料搜索
Google搜索
Google
返回上级列表

推荐文章

快速保存网页中所有图片的方法
Windows中让光驱巧妙“隐身”技
防范非法用户入侵Win 2000/XP系
两款比较典型的ASP木马防范方法
有关表格边框的css语法整理
Windows XP中可以被禁用的服务
SQL Server导出导入数据方法
Javascript所有对象的属性的获
网页(HTML)中的特殊字符
与篮球共舞,尽显模式本色
QQ病毒的手工清除方法
Photoshop为极品美女打造性感睫
天衣无缝:IIS与PHP水火也相容
SQL Server存储过程编写和优化

C语言直接显示汉字

 作者:本站收集   日期:2005-4-13
字号选择〖 〗/ 双击滚屏 单击停止   
如何显示汉字

在模式 13H 下, 直接写屏显示汉字.
其中 hzk16 是 UCDOS 的字库, 把它放在当前目录下
显示汉字用的是 区位码, 稍加修改可变成显示其它码.

// Graphics Mode 13h Test, Display a Chinese String, Wildrose Inc.
// Compile it with Watcom C/C++ 10.0 compiler
// Copyright(c) Jan. 1997 ZhangWei
// All rights reserved

#if !defined(__WATCOMC__)' '!defined(__386__)
#error "This Program needs Watcom C/C++ 10.0 Compiler"
#endif

#include
#include
#include
#include
#include
#include
#include

char c=1;
int orig_mode=3;
char *pv=(char *)(0x0A0000L);
FILE *fp; char buffer[32];

void PutPixel(int x, int y, char c)
{
*(pv+y*320+x)=c; //put pixel color
}
void InitGraph()//Set 320x200 256 colors Mode
{
union REGS regs;

//Test if it is VGA Adapter.
regs.w.ax = 0x1A00;
int386(0x10, ®s, ®s);
if(regs.h.al != 0x1A)
{
puts("This Program needs VGA Adapter ");
exit(1);
}
// get original video mode
regs.w.ax = 0x0F00;
int386(0x10, ®s, ®s);
orig_mode = regs.h.al;
// set graphic mode 13h
regs.w.ax = 0x0013;
int386(0x10, ®s, ®s);
}
void CloseGraph()
{
union REGS regs;
regs.h.ah = 0x00;
regs.h.al = orig_mode;
int386(0x10, ®s, ®s);
}

void CoutTextxy(int x, int y, int *qwm) //Display Chinese Character String
{
int pos=0;
long addr;
register p;
unsigned char bit;
while(qwm[pos])
{
if(((qwm[pos]>=101)&&(qwm[pos]<=994))||((qwm[pos]>=1601)&&(qwm[pos]<=8794)
{
addr=((long)(qwm[pos]/100-1)*94+(long)(qwm[pos]%100-1))*32; //Calculate
pos++; if(fseek(fp,addr,SEEK_SET))return; //Failed
for(register i=0;i<32;i++)
{
buffer[i]=fgetc(fp);
}
for(i=0;i<16;i++)
{
bit=0x80;
for(register k=0;k<8;k++,bit>>=1)
{
if((buffer[2*i]&bit))PutPixel(x+k,y+i,c);
if((buffer[2*i+1]&bit))PutPixel(x+k+8,y+i,c);
}
}
}
x+=16;
}
}

void main()
{
int x=120, y=60;
char filename[]="hzk16";
int sd[]={4168,2181,5102,4859,2011,0};
if((fp=fopen(filename,"rb"))==NULL)
{
printf("Can't open file %s ",filename);
return;
}
InitGraph();

CoutTextxy(x,y,sd);
c=2; CoutTextxy(x,y+16,sd);
c=3; CoutTextxy(x,y+32,sd);
c=4; CoutTextxy(x,y+48,sd);
getch();
CloseGraph();
fclose(fp);
}
上一篇:Linux内核研究系列之可执行文件格式    下一篇:和luster学习在Linux创建库函数(5)  
[发送给好友]  [关闭窗口]  [返回顶部]   转载请注明来源:www.it00.com   
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
责任编辑: 原点 投稿作者: 本站收集
信息来源: 网络 录入时间: 2005-4-13
关于我们 - 广告服务 - 版权申明 - 网站地图 - 联系方式 - 总编信箱 - 会员投稿