|

楼主 |
发表于 2004-10-27 15:13:43
|
显示全部楼层
以下是全自动加码的程序段。对于用户输入的最近的50个汉字中的任意连续的2至8个汉字的词组,当给出按照五笔规则的编码将自动出现在候选框中,如果用户选用此候选词,就执行插入五笔库的操作,否则被放弃。
//查找最后输入的MAXAUTOWUBINUM/2个汉字中是否与输入的编码相同,已经完成!
if(wStrLen==4){//如果已经输入了四个编码
WordHistoryStrLen=_tcslen(WordHistoryStr);
for(i=4;i<=MAXAUTOWUBINUM && i<=WordHistoryStrLen;i+=2){
AutoWuBiBeginNum=WordHistoryStrLen-i;
HalfAutoWuBiBeginNum=AutoWuBiBeginNum/2;
//双字词
if(i>=4){
_tcscpy(TempAutoWubi,HistoryTwoCodes+AutoWuBiBeginNum);
TempAutoWubi[4]='\0';
if(!_tcscmp(TempAutoWubi,lpStr)){
_tcscpy(AutoWuBiCode,TempAutoWubi);
_tcscpy(AutoWuBiCode1,AutoWuBiCode);
//取得两汉字串
_tcscpy(TempAutoWubi,WordHistoryStr+AutoWuBiBeginNum);
TempAutoWubi[4]='\0';
_tcscpy(AutoWuBiWord,TempAutoWubi);
HaveAutoCandList=1;
goto next;
}
}
//三字词
if(i>=6){
_tcscpy(TempAutoWubi,HistoryFirstCode+HalfAutoWuBiBeginNum);
TempAutoWubi[2]='\0';
_tcscat(TempAutoWubi,HistoryTwoCodes+AutoWuBiBeginNum+4);
TempAutoWubi[4]='\0';
if(!_tcscmp(TempAutoWubi,lpStr)){
_tcscpy(AutoWuBiCode,TempAutoWubi);
_tcscpy(AutoWuBiCode1,AutoWuBiCode);
//取得三汉字串
_tcscpy(TempAutoWubi,WordHistoryStr+AutoWuBiBeginNum);
TempAutoWubi[6]='\0';
_tcscpy(AutoWuBiWord,TempAutoWubi);
HaveAutoCandList=1;
goto next;
}
}
//四字词
if(i>=8){
_tcscpy(TempAutoWubi,HistoryFirstCode+HalfAutoWuBiBeginNum);
TempAutoWubi[4]='\0';
if(!_tcscmp(TempAutoWubi,lpStr)){
_tcscpy(AutoWuBiCode,TempAutoWubi);
_tcscpy(AutoWuBiCode1,AutoWuBiCode);
//取得四汉字串
_tcscpy(TempAutoWubi,WordHistoryStr+AutoWuBiBeginNum);
TempAutoWubi[8]='\0';
_tcscpy(AutoWuBiWord,TempAutoWubi);
HaveAutoCandList=1;
goto next;
}
}
///五个字到八个字方案一
if(i>=10){
for(j=10;(j<=i)&&(j<=16);j+=2){
_tcscpy(TempAutoWubi,HistoryFirstCode+HalfAutoWuBiBeginNum);
TempAutoWubi[3]='\0';
_tcscat(TempAutoWubi,HistoryFirstCode+HalfAutoWuBiBeginNum+j/2-1);
TempAutoWubi[4]='\0';
if(!_tcscmp(TempAutoWubi,lpStr)){
_tcscpy(AutoWuBiCode,TempAutoWubi);
_tcscpy(AutoWuBiCode1,AutoWuBiCode);
//取得五个字到八个字汉字串
_tcscpy(TempAutoWubi,WordHistoryStr+AutoWuBiBeginNum);
TempAutoWubi[j]='\0';
_tcscpy(AutoWuBiWord,TempAutoWubi);
HaveAutoCandList=1;
goto next;
}
}
}
//
//五个字到八个字方案二
//
}
}
HaveAutoCandList=0;
next: |
|