int default_action(int msg) { switch(msg) { case NEXT:deselectitem();nextitem();selectitem();break; case PREV:deselectitem();previtem();selectitem();break; case FORW:deselectitem();rightitem();selectitem();break; case BACK:deselectitem();leftitem();selectitem();break; case 'e': case '\n': case '\r': do_ok(msg);break; case 0x1b:deselectitem();setup_flag=-1;break; case UPDATE: default_update();break; case UPDATE1: default_update1();break; case TIMER: case CLEAN: printmenu();break; default: if(msg>='1' && msg <= '9')default_digital(msg); else return 0; break; } return 1; }
int mydict::query(const char *word) { if (!working) return 0; int i; long index; const char *tmp; char item1[512],item2[30],item3[512]; tmp=word; if(tmp==NULL) return 0; for(i=0;i<indexnum;i++) { if(strcasecmp(tmp,indexitem[i])<=0) break; } if(i==indexnum) i--; if(offset!=indexoffset[i]) { offset=indexoffset[i]; fseek(f1,offset,0); fread(buf,MAXLEN,1,f1); } cont=0; nextitem(item1,item2,item3); previtem(item1,item2,item3); while(1) { if(strcasecmp(tmp,item1)<=0) break; index=nextitem(item1,item2,item3); if(index<=0) break; } previtem(nearEnglishItem[0],nearMarkItem[0],nearChineseItem[0]); for(i=1;i<10;i++) { index=nextitem(nearEnglishItem[i],nearMarkItem[i],nearChineseItem[i]); if(index<=0) break; } nearNum=i; for(;i>1;i--) { index=previtem(item1,item2,item3); if(index<=0) break; } return nearNum; }