IMEWB.cpp
上传用户:hyb6888
上传日期:2016-01-24
资源大小:5186k
文件大小:5k
- #include "stdafx.h"
- #include "stdio.h"
- #include "IMEWB.h"
- #include "string.h"
- //torword =1是向下,torword=0是向上
- IMEWB::IMEWB()
- {
- mode=1;
- }
- //输入时使用的函数
- int IMEWB::NotNullMidtems()
- {
- return Midtems[0]==0 ?0:1;
- }
- char*IMEWB::GetCurPage()
- {
- return Midtems;
- }
- char*IMEWB::NextPage(int torword )
- {
- char ss[1000];
- int i=0,ret=0;
- ss[0]=0;
- if(savtorword==torword)
- {
- if(torword==1)
- {
- GetNextPage();
- }
- if(torword==0)
- {
- GetUpPage();
- }
- }
- else
- {
- if(torword==1)
- {
- ReadchNode.toword=torword;
- GetNextPage(); //越过本页
- GetNextPage();
- }
- if(torword==0)
- {
- ReadchNode.toword=torword;
- GetUpPage(); //越过本页
- GetUpPage();
- }
- }
- savtorword=torword;
- ///////////////////////////////////
- //输出页到Midtems中供外部使用
- Midtems[0]=0;
- for(i=0;i<5;i++)
- {
- if(page.OutCh[i][0]!=0)
- {
- sprintf(ss,"%s %c%s",page.OutCh[i],page.OutstrProprit[i],page.OutEn[i]);
- strcat(Midtems,ss);
- strcat(Midtems,";");
- }
- }
- return Midtems;
- }
- int IMEWB::IMEWBSetMode(int lmode)
- {
- mode=lmode;
- return 0;
- }
- //////////////////////////////////////////////////////////////
- //功能说明:
- //由给出的编码串得到五个对应编码及汉字串
- //当找到完全相符的就从此编码开始连续取5个编码并放在OutEn和OutCh中;
- //当没有找到完全相符的编码,就从与它最相近的编码开始取。
- //mode=1表示从基本到扩展,mode=2表示从扩展到基本
- //mode=3表示仅基本,mode=4表示仅扩展
- char *IMEWB::EntoCh(char* Ens)
- {
- int i,ret=0,ret2=0;
- char* pchi,ss[1000];
- strcpy(SaveInput,Ens);
- strupr(SaveInput);
- Midtems[0]=0;
- //strcpy(Ens,"zzzz");
- savtorword=1;
- ret=ReadchNode.SetData(mode,SaveInput);
- if(ret==0)//设置数据成功
- {
- ret2=GetNextPage();
- }
- {
- Midtems[0]=0;
- for(i=0;i<5;i++)
- {
- if(page.OutCh[i][0]!=0)
- {
- sprintf(ss,"%s %c%s",page.OutCh[i],page.OutstrProprit[i],page.OutEn[i]);
- strcat(Midtems,ss);
- strcat(Midtems,";");
- }
- }
- }
-
- pchi=Midtems;
- //MessageBox(0,pchi,SaveInput,0);
- return pchi;
- }
- int IMEWB::GetChiNum(int num,char *retss)
- {
- int ret=0;
- // char chss[1000];
- if(num<0||num>4)
- {
- strcpy(retss, "");
- return 0;
- }
- strcpy(retss, page.OutCh[num]);
- if(retss[0]!=0)
- ret=1;
- //对正确选择进行排序
- ReadchNode.sort(num,retss);
- return ret;
- }
- //////////////////////////////////////////////////////
- // 向下翻一页
- int IMEWB::GetNextPage() //下一页
- {
- int i;
- for(i=0;i<5;i++)
- {
- page.OutCh[i][0]=0;
- page.OutstrProprit[i]=0;
- page.OutEn[i][0]=0;
- }
- return WriteNextPage();
- }
- //////////////////////////////////////////////////////
- // 向上翻一页
- int IMEWB::GetUpPage() //上一页
- {
- int i;
- for(i=0;i<5;i++)
- {
- page.OutCh[i][0]=0;
- page.OutstrProprit[i]=0;
- page.OutEn[i][0]=0;
- }
- return WriteUpPage();
- }
- int IMEWB::ClearPage()
- {
- int i=0;
- for(i=0;i<5;i++)
- {
- page.OutCh[i][0]=0;
- page.OutstrProprit[i]=0;
- page.OutEn[i][0]=0;
- }
- SaveInput[0]=0;
- Midtems[0]=0;
- return 0;
- }
- ////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////
- //返回非0表示有错误发生,1表示无数据读出,2表示下一次无数据可读。
- int IMEWB:: WriteUpPage()
- {
- int i;
- int ret;
- char CC[1000],EE[100];
- for(i=4;i>=0;i--)
- {
- ret=ReadchNode.GetWord(CC,EE);
- if(ret==3)//边界处解除成功
- {
- break;
- }
- if(ret==1)//说明已到边界处
- {
- break;
- }
- page.OutstrProprit[i]=getpropty(EE);
- strcpy(page.OutEn[i],EE);
- strcpy(page.OutCh[i],CC);
- strlwr(page.OutEn[i]);
- if(ret==2)//说明已到边界处
- {
- break;
- }
- }
- return i-1;
- }
- int IMEWB:: WriteNextPage()
- {
- int i;
- int ret;
- char CC[1000],EE[100];
- for(i=0;i<5;i++)
- {
- //返回非0表示有错误发生,1表示无数据读出,2表示下一次无数据可读。
- ret=ReadchNode.GetWord(CC,EE);
- if(ret==3)//边界处解除成功
- {
- break;
- }
- if(ret==1)//说明已到边界处
- {
- break;
- }
- page.OutstrProprit[i]=getpropty(EE);
- strcpy(page.OutEn[i],EE);
- strcpy(page.OutCh[i],CC);
- strlwr(page.OutEn[i]);
- if(ret==2)//说明已到边界处
- {
- break;
- }
- }
- return i-1;
- }
- ////////////////////////////////////////////////////
- //与保存的输入进行比较,从而得出属性值
- char IMEWB::getpropty(char *EE)
- {
- char ss[100],ret;
- int len1,len2;
- strcpy(ss,EE);
- len1=(int)(strlen(SaveInput));
- len2=(int)(strlen(EE));
- ss[len1]=0;
- if(strcmp(SaveInput,ss)==0)
- {
- if(len1==len2)
- ret='1';
- else
- ret='2';
- }
- else
- {
- ret='3';
- }
- return ret;
- }