level 12
简单aaaaaaa
楼主
int slideinput(SDL_Rect rect,unsigned long int b,char*str,unsigned long int a,int h)
{
int i,j=0,k=0,s=0;
char st[1000];
SDL_Rect pos=(SDL_Rect){0,0,0,0};
if(state==FINGERUP)//如果按下
{
TXTBOX_slide[TXTBOX_id]=0;
if(event.tfinger.x*S_w>rect.x&&event.tfinger.x*S_w<rect.x+rect.w&&event.tfinger.y*S_h>rect.y&&event.tfinger.y*S_h<rect.y+rect.h)
{
SDL_StartTextInput();
INP_k[INP_id]=1;//开启光标
//寻找字符下标
inpy=0;
s=TXTBOX_i[TXTBOX_id];
for(i=TXTBOX_i[TXTBOX_id];i<strlen(str);i++)
{//扫描并显示
strcpy(st,strtoa(str,s,i));
TTF_SizeUTF8(TXT_font,st,&j,&k);
j=j*h/TXT_size;
free(st);
if(event.tfinger.y*S_h-h-TXTBOX_fu[TXTBOX_id]<inpy+rect.y)
if(event.tfinger.x*S_w<j+rect.x)
{
ab=i;//+TXTBOX_i[TXTBOX_id];
goto a;
}
if(str[i]==10)
{
//strcpy(st,strtoa(str,s,i-1));
//displaytext(pos,st,a,0);
//free(st);
s=i+1;
j-=pos.w;
j=0;
inpy+=h;
if(pos.y-rect.y>rect.h)break;
}
//pos.w=j;
if(str[i]<128||str[i]>191)
{
if(j>rect.w)//如果超出了行宽
{
//strcpy(st,strtoa(str,s,i-1));
//displaytext(pos,st,a,0);
//free(st);
s=i;
j-=pos.w;
j=0;
inpy+=h;
if(pos.y-rect.y>rect.h)break;
}
}
}//for
ab=strlen(str);
a:;
}
}//如果是fingerDOWN
if(state==TEXTINPUT)//输入状态
{
char*strp=event.text.text;
strin(str,ab,strp);
ab+=strlen(strp);
//free(strp);
}//输入,定位光标
if(state==KEYUP)//有按键9
{
if(event.key.keysym.sym==SDLK_RETURN)
{
strin(str,ab,"\n");
ab++;
}
else
if(event.key.keysym.sym==SDLK_BACKSPACE)//如果退格键
{
strcpy(str,strde(str,ab-1,ab));
ab--;
}
}
//TXTBOX_id++;
//实时更新光标位置
s=TXTBOX_i[TXTBOX_id];
inpy=0;
for(i=TXTBOX_i[TXTBOX_id];i<ab;i++)
{
strcpy(st,strtoa(str,s,i));
TTF_SizeUTF8(TXT_font,st,&j,&k);
j=j*h/TXT_size;
free(st);
if(str[i]==10)
{
//strcpy(st,strtoa(str,s,i-1));
//displaytext(pos,st,a,0);
//free(st);
s=i+1;
j=0;
inpy+=h*1;//行距
//if(pos.y-rect.y>rect.h)break;
}
//pos.w=j;
if(str[i]<128||str[i]>191)
{
if(j>rect.w)//如果超出了行宽
{
//strcpy(st,strtoa(str,s,i-1));
//displaytext(pos,st,a,0);
//free(st);
s=i;
j=0;
inpy+=h*1;//行距
//if(pos.y-rect.y>rect.h)break;
}
}
}
ab=i;//+TXTBOX_i[TXTBOX_id];
INP_site[INP_id]=j+rect.x;
ae=TXTBOX_i[TXTBOX_id];
slidetxtbox(rect,b,str,a,h);
if(INP_k[INP_id]>0)//光标开关
{
pos.x=INP_site[INP_id];
pos.y=rect.y+inpy+TXTBOX_fu[TXTBOX_id-1];
pos.w=2;
pos.h=h;
glint(pos,500);
}
INP_id++;
return 0;
}

2016年03月20日 00点03分
1
{
int i,j=0,k=0,s=0;
char st[1000];
SDL_Rect pos=(SDL_Rect){0,0,0,0};
if(state==FINGERUP)//如果按下
{
TXTBOX_slide[TXTBOX_id]=0;
if(event.tfinger.x*S_w>rect.x&&event.tfinger.x*S_w<rect.x+rect.w&&event.tfinger.y*S_h>rect.y&&event.tfinger.y*S_h<rect.y+rect.h)
{
SDL_StartTextInput();
INP_k[INP_id]=1;//开启光标
//寻找字符下标
inpy=0;
s=TXTBOX_i[TXTBOX_id];
for(i=TXTBOX_i[TXTBOX_id];i<strlen(str);i++)
{//扫描并显示
strcpy(st,strtoa(str,s,i));
TTF_SizeUTF8(TXT_font,st,&j,&k);
j=j*h/TXT_size;
free(st);
if(event.tfinger.y*S_h-h-TXTBOX_fu[TXTBOX_id]<inpy+rect.y)
if(event.tfinger.x*S_w<j+rect.x)
{
ab=i;//+TXTBOX_i[TXTBOX_id];
goto a;
}
if(str[i]==10)
{
//strcpy(st,strtoa(str,s,i-1));
//displaytext(pos,st,a,0);
//free(st);
s=i+1;
j-=pos.w;
j=0;
inpy+=h;
if(pos.y-rect.y>rect.h)break;
}
//pos.w=j;
if(str[i]<128||str[i]>191)
{
if(j>rect.w)//如果超出了行宽
{
//strcpy(st,strtoa(str,s,i-1));
//displaytext(pos,st,a,0);
//free(st);
s=i;
j-=pos.w;
j=0;
inpy+=h;
if(pos.y-rect.y>rect.h)break;
}
}
}//for
ab=strlen(str);
a:;
}
}//如果是fingerDOWN
if(state==TEXTINPUT)//输入状态
{
char*strp=event.text.text;
strin(str,ab,strp);
ab+=strlen(strp);
//free(strp);
}//输入,定位光标
if(state==KEYUP)//有按键9
{
if(event.key.keysym.sym==SDLK_RETURN)
{
strin(str,ab,"\n");
ab++;
}
else
if(event.key.keysym.sym==SDLK_BACKSPACE)//如果退格键
{
strcpy(str,strde(str,ab-1,ab));
ab--;
}
}
//TXTBOX_id++;
//实时更新光标位置
s=TXTBOX_i[TXTBOX_id];
inpy=0;
for(i=TXTBOX_i[TXTBOX_id];i<ab;i++)
{
strcpy(st,strtoa(str,s,i));
TTF_SizeUTF8(TXT_font,st,&j,&k);
j=j*h/TXT_size;
free(st);
if(str[i]==10)
{
//strcpy(st,strtoa(str,s,i-1));
//displaytext(pos,st,a,0);
//free(st);
s=i+1;
j=0;
inpy+=h*1;//行距
//if(pos.y-rect.y>rect.h)break;
}
//pos.w=j;
if(str[i]<128||str[i]>191)
{
if(j>rect.w)//如果超出了行宽
{
//strcpy(st,strtoa(str,s,i-1));
//displaytext(pos,st,a,0);
//free(st);
s=i;
j=0;
inpy+=h*1;//行距
//if(pos.y-rect.y>rect.h)break;
}
}
}
ab=i;//+TXTBOX_i[TXTBOX_id];
INP_site[INP_id]=j+rect.x;
ae=TXTBOX_i[TXTBOX_id];
slidetxtbox(rect,b,str,a,h);
if(INP_k[INP_id]>0)//光标开关
{
pos.x=INP_site[INP_id];
pos.y=rect.y+inpy+TXTBOX_fu[TXTBOX_id-1];
pos.w=2;
pos.h=h;
glint(pos,500);
}
INP_id++;
return 0;
}
