主题:急!!!关于qb里如何输入中文!!
xiaophai
[专家分:20] 发布于 2006-02-12 18:34:00
我看了哪个帖子了.但是好象每次都要从头开始!有没有什么快点的路??不用每次都从头开始!
回复列表 (共6个回复)
沙发
xiaophai [专家分:20] 发布于 2006-02-12 18:36:00
我看的是小菜的帖子!请大家帮帮忙!
板凳
tianyuan008 [专家分:14360] 发布于 2006-02-13 00:35:00
先安装 UCDOS ,总而言之你要有个中文 DOS 操作系统.
给你看看写中文 DOS 系统的人说的(c语言,basic更麻烦):
由于在中文环境下,输入的是汉字的内码,我们必须将之转换成区位码,算出偏移量,从字库中找到对应的汉字,将其字模显示即可。
内码转换成区位码方法如下:
qh=c1-0xa0 wh=c2-0xa0
其区位码就是:
qw=qh*0xff+wh
该汉字在字库中离起点的位置是:
offset=(94*(qh-1)+(wh-1))*32L
程序例:
#include 〈graphics.h〉
#include 〈stdio.h〉
#include 〈fcntl.h〉
#include 〈io.h〉
#include 〈stdlib.h〉
#include 〈conio.h〉
#define ROW 1 //纵坐标放大倍数
#define COL 2 //横坐标放大倍数
void main()
{
int x,y;
char *s=″汉字显示程序″;
FILE *fp;
char buffer[32]; //buffer用来存储一个汉字
register m,n,i,j,k;
unsigned char qh,wh;
unsigned long offset;
int gd=DETECT,gm; //图形屏幕初始化
initgraph(&gd,&gm,″ ″);
if ((fp=fopen(″hzk16″,″rb″))==NULL)
//打开汉字库,该字库可以在ucdos中找到
{ printf(″Can't open haz16,Please add it″);
getch(); closegraph(); exit(0);
}
x=20; y=100; //显示位置设置
while(*s)
{ qh=*(s)-0xa0; //汉字区位码
wh=*(s+1)-0xa0;
offset=(94*(qh-1)+(wh-1))*32L; //计算该汉字在字库中偏移量
fseek(fp,offset,SEEK_SET);
fread(buffer,32,1,fp); //取出汉字32字节的点阵字模存入buffer中(一个汉字)
for (i=0;i〈16;i++) //将32位字节的点阵按位在屏幕上打印出来(1:打印,0:不打印),显示汉字
for(n=0;n〈ROW;n++)
for(j=0;j〈2;j++)
for(k=0;k〈8;k++)
for(m=0;m〈COL;m++)
if (((buffer[i*2+j]〉〉(7-k))&0x1)!=NULL)
putpixel(x+8*j*COL+k*COL+m,y+i*ROW+n,GREEN);
s+=2; //因为一个汉字内码占用两个字节,所以s必须加2
x+=30;
}
getch();
closegraph();
}
也就是说你必须能打开一个中文字库然后用图形的方法把字给画出来.
另外一个的描述更明确:
这个问题要细分
首先看你的程序是DOS?还是WINDOWS?要是是WINDOWS那没什么话说,那用现成的函数就是了,如果是DOS那~~
首先看你的程序是运行在中文DOS下还是纯西文DOS下,如果是中文DOS,那也是直接用常用的函数就可以了,可在纯DOS下,那就复杂了
首先你得学图形编程,因为我们只有在图形模式下。提取汉字字模再画出汉字,(其实我们WINDOS就是图形模式的操作系统拉)解决汉字显示问题了,那你下步就是着手实现汉字的输入
那汉字的输入主要包括你先创造一种输入法~~(可以参考比如全拼和智拼输入法等),然后根据你创造好的输入法规则些个个根据键盘输入来找汉字字库中的字模再显示在屏幕上,这样你就实现了,在纯DOS下的汉字输入输出了~~
呵呵,看到着你也就明白了,你要是在纯DOS下实现这个,那就等于你写了个输入系统了,稍微扩展一下你就给DOS做了升级,到支持中文了,呵呵,努力啊,等学到时候了自然就可以做这样的项目了~~呵呵
汉字也是字符,跟其他字符一样,跟语言没关系。跟操作系统有关系,tc2用dos系统,如果你的dos系统没有支持汉字,那有什么办法。
如果你用vc,vc用windows系统,那你的windows系统支持汉字, 放在vc里面编译,通过了~
你会说tc2我不是也在windows下调用嘛。它用的是dos
3 楼
tianyuan008 [专家分:14360] 发布于 2006-02-13 00:38:00
实际上, QBasic 只是用来熟悉语法的,现在没有人用它做实际的项目.因为QBasic 做出来的项目没有用户.
想做实际的项目应该用 VB .
4 楼
tianyuan008 [专家分:14360] 发布于 2006-02-13 00:46:00
另外,即使你了解了Windows的字库,你把它弄出来还是一个大问题!
做那么难的事情干什么? 直接学 VB 算了.
5 楼
xiaophai [专家分:20] 发布于 2006-02-16 19:10:00
个人爱好.我就是喜欢QBasic.即使以后会学其他的语言.但是我还会继续学它.继续用它.只是会把它定位在爱好上而已.因为它是我学的第一门语言.谢谢你了.
6 楼
maxumi [专家分:2200] 发布于 2006-04-07 16:47:00
建一个.bat文件,输入两行:
pdos95
qbasic
我来回复