- 注册时间
- 2005-4-30
- 最后登录
- 1970-1-1
|
发表于 2006-2-11 22:02:00
|
显示全部楼层
char input_txt[100];
long e(char n){long x;int i;x=1;if(n>=1)for(i=1;i<=n;i++)x=x*10;return x;}
long getnum(char x,char y,char l)
{
char p,key,len,i;
long num;
for(;;)
{
memset(input_txt,0,100);
Block(x,y,x+l*6+8,y+14,0);
TextOut(x+1,y+1,input_txt,1);
if(Getms()<128)Line(x+p*6+1,y+1,x+p*6+1,y+13,65);
Refresh();
key=Inkey();
if((key<=57&&key>=48)||key==22||key==23||key==29||key==13);
else continue;
len=strlen(input_txt);
if(key<=57&&key>=48){
if(len<=l){
if(p<len)memmove(input_txt+p+1,input_txt+p,len-p);
input_txt[p]=key;
p++;}}
else if(key==22)if(p<len)p++;
else if(key==23)if(p>0)p--;
else if(key==29){if(len!=0)
if(p<len){memmove(input_txt+p,input_txt+p+1,len-p);input_txt[len]=0;}
else{input_txt[len-1]=0;p--;}}
else if(key==13){num=0;
if(len==0)return 0;
for(i=0;i<len;i++)num=num+e(i)*(input_txt[len-i-1]-48);
return num;}}
}
void gettxt(char x,char y,char l)
{
char p,key,len;
for(;;)
{
memset(input_txt,0,100);
Block(x,y,x+l*6+8,y+14,0);
TextOut(x+1,y+1,input_txt,1);
if(Getms()<128){setcl(15,0);Line(x+p*6+1,y+1,x+p*6+1,y+13,65);}
Refresh();key=Inkey();
if(isalpha(key)||key==22||key==23||key==29||key==13);
else continue;
len=strlen(input_txt);
if(key==22)if(p<len)p++;
else if(key==23)if(p>0)p--;
else if(key==29){if(len!=0){
if(p<len){memmove(input_txt+p,input_txt+p+1,len-p);input_txt[len]=0;}
else{input_txt[len-1]=0;p--;}}}
else if(key==13){return 0;}
else if(isalpha(key)){
if(len<=l){
if(p<len)memmove(input_txt+p+1,input_txt+p,len-p);
input_txt[p]=key;
p++;}}}}
|
|