易码技术论坛

 找回密码
 加入易码
搜索
查看: 122716|回复: 3

怎样输入汉字?怎样把汉字保存为DAT?

[复制链接]
发表于 2005-8-19 13:05:00 | 显示全部楼层
LavaX1.0使用GetWord()函数获得汉字,返回的是汉字的GB码(2字节的int)将其写入DAT文件就可以
LavaX1.0以上使用System.PY2GB()函数获得汉字,具体方法参看帮助说明
 楼主| 发表于 2005-8-19 13:39:00 | 显示全部楼层
  但是输入的字符不能退格
发表于 2005-8-19 14:30:00 | 显示全部楼层
所有工作都需要你自己来作的。
  1. //读取键盘输入函数
  2. void Input(int string,int x,int y,int length)
  3. {
  4. int c;//字符缓存
  5. char p;//指针
  6. char len[256];//字符长度储存
  7. char Caps;
  8. char mode;
  9. Caps=TRUE;
  10. mode=3;
  11. p=0;
  12. do
  13. {
  14.   Box(x+p*6,y+13,x+p*6+6,y+14,1,1);
  15.   c=GetWord(mode);
  16.   if (c==KEY_F2||c==LEFT_ARROW)
  17.   {
  18.    if(p!=0)
  19.    {
  20.     p=p-len[ p];
  21.     *(string+p)=0;
  22.    }
  23.   }/*else if(c==KEY_SHIFT)
  24.   {
  25.    if(mode==2)
  26.      mode=0;
  27.    else
  28.      mode++;
  29.   }*/
  30.   /*else if(c==KEY_CAPS)
  31.   {
  32.    if(Caps==FALSE)
  33.     Caps=TRUE;
  34.    else
  35.     Caps=FALSE;
  36.   }*/
  37.   else if(c==KEY_ENTER)
  38.   {
  39.    *(string+p)=0;
  40.    break;
  41.   }else
  42.   {
  43.    if ((c&0xff00)==0 && isprint(c)&&p<length)
  44.    {
  45.     //if(Caps==TRUE) c=toupper(c);
  46.     *(string+p)=c;
  47.     p++;
  48.     len[ p]=1;
  49.     *(string+p)=0;
  50.    }else if (c<0&&p<length-1)
  51.    {
  52.     memset(_TEXT+4*20,' ',20); //清除提示行
  53.     *(string+p)=c;
  54.     *(string+p+1)=c>>8;
  55.     p=p+2;
  56.     len[ p]=2;
  57.     *(string+p)=0;
  58.    }
  59.   }
  60.   Refresh();
  61.   TextOut(x,y,string,0x43);
  62. }while(p>=0)
  63. }
  64. }
复制代码

这个是我从《时空》代码里面截取的输入函数,可以支持汉字输入。
这段代码没有#define,不能直接用。请参考时空引擎全代码自己补上缺少的预定义。

至于保存,就是保存数据。你把字符存在char数组里面然后保存这个数组就可以了。
 楼主| 发表于 2005-8-19 12:36:05 | 显示全部楼层 |阅读模式
怎样输入汉字?怎样把汉字保存为DAT?
代码为多少?
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-5-30 02:42 , Processed in 0.009024 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表