- 注册时间
- 2004-9-23
- 最后登录
- 1970-1-1
|
下面的源程序是我编《极限斗地主》时写的,但这个函数在TC800中不能输入中文。有谁能帮我把它改成适合TC800输入中文的输入函数呢?我在这里先谢了!同时也为TC800的用户说声谢!
void inputname()
{
char gs[3];
int cz;
char name[7];
char mode;
mode=2;
n=0 ;
gs[2]=0 ;
memset(name,0,7);
GetBlock(0,0,160,80,0x40,data);
for(;;)
{
n=strlen(name);
WriteBlock(0,0,160,80,0x81,data);
Block(14,30,146,48,0);
Rectangle(14,30,146,48,1);
Block(16,49,146,50,1);
Block(147,32,148,50,1);
TextOut(16,32,"你的名字:",0x81);
TextOut(96,32,name,0x81);
if(strlen(name)<6)Block(strlen(name)*8+96,32,strlen(name)*8+104,46,1);
else Block(strlen(name)*8+88,32,strlen(name)*8+96,46,2);
Refresh();
cz=GetWord(mode);//关键可能是在这里吧??
mode=3;
gs[0]=cz ;
if(isprint(gs[0]) && n<6)
{
name[n]=gs[0];
continue ;
}
else
if(gs[0]>=160 && n<6)
{
gs[1]=cz>>8 ;
memcpy(name+n,gs,2);
continue ;
}
else
if(gs[0]==23 && n)
{
n--;
if(name[n]>=160)
{
n--;
memset(name+n,0,2);
}
else name[n]=0 ;
continue ;
}
else
if(gs[0]==13 && n)
{
name[n]=0 ;
sprintf(ndmz,name);
output();
break ;
}
if(gs[0]==27)
{
return;
}
if(n==0 && gs[0]==13)Beep();
if(n==6)Beep();
}
}
|
|