网站地图| 免费获取|
免费论文网
  • 网站首页|
  • 论文范文|
  • 修改降重|
  • 职称论文|
  • 合作期刊|
  • 论文下载|
  • 计算机论文|
  • 外文翻译|
  • 免费论文|
  • 原创论文|
  • 开题报告论文
搜索

当前位置:免费论文网 -> 免费论文 -> 计算机论文 -> 移动终端汉语拼音输入法及本地搜索接口实现技术(四)
计算机论文| ASP设计| Delphi| VB设计| JSP设计| ASP.NET设计| VB.NET| java设计| VC| pb| VS| dreamweaver| c#.net| vf| VC++| 计算机论文范文| 论文下载| 自动化论文

移动终端汉语拼音输入法及本地搜索接口实现技术(四)

移动终端汉语拼音输入法及本地搜索接口实现技术(四)  
     unsigned char i,j;
  unsigned char cInputStrLength=strlen(strInput_mge_str);//输入拼音串长度//
     cpmgePY_Mblen=0;                                //完全匹配组数
     j=0;                                        //j为匹配最大值
     if(*strInput_mge_str=='\0')return(0);       //如果输入空字符返回0//
     cpHZ=&(mgePY_index2[0]);                        //查首字母索引//
     cpHZedge=mgePY_index2+sizeof(mgePY_index2)/sizeof(mgeY_index2[0]);//指向了最后一个索引
 //    strInput_mgePY_str++;                        //指向拼音串第二个字母//
     while(cpHZ < cpHZedge)                       //待查询记录条数
     {
         for(i=0;i<cInputStrLength;i++)
         {
                if(*(strInput_mge_str+i)!=*((*cpHZ).mge_T9+i))    //检查字符串匹配,就是看输入的数字字符是否和索引表中的数字一一相对应`
             {
                 if (i+1 > j)
                 {
                     j=i+1;                    //j为匹配最大值
                     cpHZTemp=cpHZ;
                 }
                 break;                        //发现字母串不配,退出//
             }           
         }
         if((i==cInputStrLength) && (cpmgePY_Mblen<16))    //字母串全配,最多8组
         {
             cpmgePY_Mb[cpmgePY_Mblen]=cpHZ;
             cpmgePY_Mblen++;
         }
         cpHZ++;
     }
      if(j!=cInputStrLength)                 //不完全匹配输出最多匹配的1组
         cpmgePY_Mb[0]=cpHZTemp;
     return (cpmgePY_Mblen);                //输出完全匹配组数,0为无果而终//
 }
4.2  输入法输入模块的设计
 输入法用户输入模块主要包括状态窗口、编辑窗口和候选窗口。而一般状态窗口不用一个窗口来显示,而是用右上角的一个图标来显示当前的输入法状态。所以主要实现编辑窗口和候选窗口。输入法用户界面模块类结构主要有InputEdit类CutString类。InputEdit类和CutString类实现对用户界面的编辑和光标的移动,右侧滑竿光标索引超出屏幕文字行数每行文字的半段,填充区高度显示区域,显示文字的行数,可绘制区域最大高度可绘制区域最大宽度,文本编辑区域每行字数,拼音编辑区宽度输入类型,显示区域宽度,当前拼音对应的字符的输入框的高度显示,当前拼音对应字符的输入框宽度,输入框间隔输,入超时时间等等的处理。InputEdit类、CutString类的类图如图4-2所示:
   
 图4-2  InputEdit类、CutString类的类图
 
 本模块实现的核心代码包括InputEdit类中的InputEdit函数和CutString类中drawCutString函数,InputEdit函数主要实现对输入法用户界面的编辑。其核心代码如下:
 public InputEdit() {
 font = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_SMALL);
 fontWidth = (byte)font.charWidth(CHAR);
 fontHeight = fontWidth;//(byte)font.getHeight();
 letterWidth = (byte)font.charWidth(LETTER);
 curSpells = new StringBuffer();
 selectedSpell = new StringBuffer();
 inputedChars = new StringBuffer();
 cutString = new CutString();
 editFrameCell = 2;
 editModeWidth = fontWidth + 16;
 inputStatus = STATUS_SPELL;
 init();
 drawCutString函数主要实现光标的绘制,其核心代码如下:
 public int drawCutString(Graphics graphic,String str,int x,int y,int width,int height,boolean isShowEditBG){
   if(str != null){
    if(str.hashCode() != oldHashcode){
     initStatus();
     oldCilpX = graphic.getClipX();
     oldCilpY = graphic.getClipY();
     oldCilpWidth = graphic.getClipWidth();
     oldCilpHeight = graphic.getClipHeight();
     oldFont = graphic.getFont();
     maxCanvasWidth = width - 6;
     maxCanvasHeight = height;
     for(int i = 0;i < str.length();i++){
      sb.append(str.charAt(i));
      if(font.stringWidth(sb.toString()) > maxCanvasWidth - fontWidth){
       textVector.addElement(sb.toString());
       sb.delete(0, sb.length());
      }else if(str.length() - 1 == i){
       textVector.addElement(sb.toString());
      }
     }
     rowCount = textVector.size();
     if(oldStrLength != str.length()){
      if(oldStrLength > str.length()){
       decCursorIndex();
      }else{
       addCursorIndex();
      }
      oldStrLength = str.length();
     }
     isMoreThanCanvas();
     oldHashcode = str.hashCode();
     if(isMoreThanCanvas){
      if(cursorH > (rowCount - maxRowCount - 1))
      rightLineIndex = cursorH - (rowCount - maxRowCount - 1);
     }
    }
   }
   graphic.setFont(font);
   graphic.setClip(x - 1, y -1, maxCanvasWidth + 9, maxCanvasHeight + 2);
   drawEditBG(graphic, x, y, isShowEditBG);
   int count = 0;
   for(int i =0;i < textVector.size();i++){
     graphic.drawString(textVector.elementAt(i).toString(), x,

首页 上一页 1 2 3 4 5 下一页 尾页 4/5/5

移动终端汉语拼音输入法及本地搜索接口实现技术(四)由免费论文网(www.jaoyuw.com)会员上传。
原创论文流程 相关论文
上一篇:网络多媒体资源管理信息系统的开发 下一篇:网上购物电子商务系统
推荐论文 本专业最新论文
Tags:移动 终端 汉语拼音 输入法 本地 搜索 接口 实现 技术 2011-01-15 10:11:30【返回顶部】
精彩推荐
发表论文

联系方式 | 论文说明 | 网站地图 | 免费获取 | 钻石会员 | 硕士论文


免费论文网提供论文范文,论文代发,原创论文

本站部分文章来自网友投稿上传,如发现侵犯了您的版权,请联系指出,本站及时确认并删除  E-mail: 17304545@qq.com

Copyright@ 2009-2020 免费论文网 版权所有 湘ICP备19027999