📄 t9.c
字号:
n=n-16;
if(n<0)
{
m=0;
n=0;
}
}
/* printf("m1=%d,",m);
printf("n1=%d,",n); */
bar(105+m,155+n,105+8+m,155+16+n);
}
/*------------------------------------------------------------------------------------*/
/* void cancel_data1() */
/* ---消除退格线子函数--- */
/* ---入口:无;返回:无--- */
/* ---功能:将输入框内的退格线取消--- */
/*------------------------------------------------------------------------------------*/
void cancel_data1()
{
m=m+8;
if(m>416)
{
bar(105,155+n+16,105+8,155+32+n);
m=424;
}
else
{
/* printf("m2=%d",m);
printf("n2=%d,",n); */
bar(105+m,155+n,105+8+m,155+16+n);
}
m=m-8;
}
/*------------------------------------------------------------------------------------*/
/* void cancel_data2() */
/* ---清除退格线子函数--- */
/* ---入口:无;返回:无--- */
/* ---功能:将输入框内的退格线取消--- */
/*------------------------------------------------------------------------------------*/
void cancel_data2()
{
bar(105+m,155+n,105+8+m,155+16+n);
}
/*------------------------------------------------------------------------------------*/
/* void blueline() */
/* ---提前画线子函数--- */
/* ---入口:无;返回:无--- */
/* ---功能:将输入框内的退格线提前一格画出--- */
/*------------------------------------------------------------------------------------*/
void blueline(char bn)
{
if(m==416)
{
m=0;
n=n+16;
}
output_other(105+m+8*bn,155+n,28,9,4);
}
/*--------------------------------------------------------------------------------------*/
/* unsigned char *show_hz_clue(int a,int b) */
/* */
/* ---字符数字提示子函数--- */
/* ---入口:a=i=第几次按键,b=k=hzk_index[][]的第几行(X轴);返回:无--- */
/* ---功能:hzk_index[][]的第几行,找到第7列和第8列数据,求的hzk_bin[]中的字模代号, */
/* 并由字模代号,算得字库相对应汉字的位置,送output去显示--- */
/*--------------------------------------------------------------------------------------*/
unsigned char *show_hz_clue(int a,int b)
{
int v2,v3,v4,n,v5,v6,j;
int nh,nl,num_0=0,num_1=0,num_2=0;
unsigned char *p2,pt[2];
v2=hzk_index[b][6]; /*v2为字母组合可能数,它位于索引表每行第7列*/
p2=&hzk_index[b][6];
temp_data[0]=v2*hzk_index[b][7]+v2*2; /*保存某拼音组合的的字模个数*/
for(j=0;j<=b;j++)
{
num_0=((hzk_index[j][6]*2)+(hzk_index[j][6]*hzk_index[j][7]));
num_1=num_1+num_0; /*由hzk_index[][]的6,7列计算在hzk_bin[]中对应字模代码的起始位置地址,*/
num_2=num_1-num_0; /*各列的定义见index.c*/
}
v3=num_2;
temp_data[1]=v3; /*保存某拼音组合字模代码的起始位置*/
v4=v3;
nh=hzk_bin[v3]; /*文字X轴的地址*/
nl=hzk_bin[v3=v3+1]; /*文字Y轴的地址*/
bar(180,100,536,145); /*清空字母文字提示框*/
for(n=0;n<v2;n++) /*显示数字和相对应的字母*/
{
output_other(183+n*64,103,n+1,7,3);
for(v5=0;v5<=a;v5++)
{
output_other(193+n*64+v5*8,103,hzk_bin[((v4+v2*2)+(a+1)*n+v5)]-1,2,1);
}
}
/*显示数字和相对应的汉字*/
for(n=0;n<8;n++)
{
nl=nl+1;
if(nl>94) /*当Y轴的选择数字大于94,则跳到下一行,开始输出汉字*/
{
nh=nh+1;
nl=nl-94;
}
output_other(183+n*32,125,n+1,7,3);
output_hz(193+(n*2)*16,125,nh,nl-1,2);
}
return(p2);
}
/*------------------------------------------------------------------------------------*/
/* void get_hz_data(unsigned int vn_h,unsigned int vn_l,unsigned char c1) */
/* */
/* ---取输入框中汉字子函数--- */
/* ---入口:vn_h=区位表x轴地址,vn_l=区位表y轴地址;返回:无--- */
/* ---功能:得到当前需要的汉字的区位表地址,送output_hz()函数--- */
/*------------------------------------------------------------------------------------*/
void get_hz_data(unsigned int vn_h,unsigned int vn_l,unsigned char c1)
{
if(c1==9)
{
bar(180,100,536,145); /*清空字母文字提示框*/
}
if(c1==1||c1==2||c1==3||c1==4||c1==5||c1==6||c1==7||c1==8)
{
vn_l=vn_l+c1;
if(vn_l>94)
{
vn_l=vn_l-1;
vn_h=vn_h+1;
}
bar(180,100,536,123);
blueline(2);
output_hz(105+m,155+n,vn_h,vn_l-8-1,2);
m=m+16;
if(m>416)
{
m=0;
n=n+16;
}
if(n>80)
{
m=0;
n=0;
bar(105,155,536,255);
}
}
}
/*-----------------------------------------------------------------------------------*/
/* void get_hz_index(unsigned char n6,unsigned char n7,unsigned char *p4) */
/* */
/* ---取输入框中汉字子函数--- */
/* ---入口:n6=hzk_index[][6],n7=hzk_index[][7],p4=temp_d[];返回:无--- */
/* ---功能:通过n6,n7,temp_d[]获得当前拼音组合的汉字提示--- */
/*-----------------------------------------------------------------------------------*/
void get_hz_index(unsigned char n6,unsigned char n7,unsigned char *p4)
{
char op,lp,vn1,vn2,vn3,j,n,c2,v_n1,v_n3;
unsigned char *p5,page1=0;
p5=p4;
/* printf("=00"); */
lp=check_return(getch());
/* printf("=01"); */
for(op=1;op<n6+1;op++)
{
if(lp==9)
{
bar(180,100,536,145); /*清空字母文字提示框*/
break;
}
if(lp==op)
{
vn1=*(p5+(lp-1)*2); /*汉字字模代码*/
vn3=*(p5+(lp-1)*2+1);
/* printf("vn1=%d\n",vn1);
printf("vn3=%d\n",vn3); */
bar(180,100,536,145);
for(j=0;j<n7;j++)
{
vn2=*(p4+n6*2+(lp-1)*n7+j); /*拼音字模代码*/
output_other(183,103,1,7,3);
output_other(193+j*8,103,vn2-1,2,1);
}
while(1)
{
if(c2==11&&page1<5)
{
page1=page1+1;
vn3=vn3+8;
bar(180,125,536,145);
if(vn3>94)
{
vn3=vn3-94;
vn1=vn1+1;
}
}
if(c2==10&&page1>0)
{
page1=page1-1;
vn3=vn3-8;
bar(180,125,536,145);
if(vn3<0)
{
vn3=94+vn3;
vn1=vn1-1;
}
}
for(n=0;n<8;n++)
{
if((vn3+n)>94) /*当Y轴的选择数字大于94,则跳到下一行,开始输出汉字*/
{
vn3=vn3-94;
vn1=vn1+1;
}
output_other(183+n*32,125,n+1,7,3);
output_hz(193+(n*2)*16,125,v_n1=vn1,v_n3=vn3+n,2);
}
c2=check_return(getch());
if(c2==1||c2==2||c2==3||c2==4||c2==5||c2==6||c2==7||c2==8||c2==9)break;
}
page1=0;
get_hz_data(v_n1,v_n3+1,c2); /*==调用 取输入框中汉字子函数 */
}
}
}
/*-------------------------------------------------------------------------------------*/
/* void show_other_clue(int vt,int qw,int sel) */
/* */
/* ---其它输入提示子函数--- */
/* ---入口:vt=当前需显示的状态(字母or数字or标点等),qw=翻页一次加的值; */
/* sel=当前显示提示数字的号码;返回:无--- */
/* ---功能:显示小写字母,大写字母, 数字,标点符号的提示--- */
/*-------------------------------------------------------------------------------------*/
void show_other_clue(int vt,int qw,int sel)
{
unsigned int i;
for(i=0;i<sel;i++)
{
output_other(183+(i*2)*16,125,i+1,7,3);
output_other(193+(i*2)*16,125,i+qw,2,vt);
}
}
/*------------------------------------------------------------------------------------*/
/* void get_other_data(int dt,int vs,int sd) */
/* */
/* ---得到数值子函数--- */
/* ---入口:dt=key按键返回值,vs=v_s当前输入法状态,sd=s1当前某字符地址;返回: --- */
/* ---功能:取得提示框内的字符,按数字几得到相对应的字符--- */
/*------------------------------------------------------------------------------------*/
void get_other_data(int dt,int vs,int sd)
{
unsigned int gd;
if(dt==1||dt==2||dt==3||dt==4||dt==5||dt==6||dt==7||dt==8)
{
cancel_data2();
blueline(1);
output_other(105+m,155+n,sd+dt-1,2,vs);
m=m+8; /* 8*52=416点 */
if(m>416)
{
m=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -