原始程式
UReadTog
原始檔-起始 #include "w_obj.h" extern unshort RetKey; extern int Modify,NetWare,NetWritAble; /*================================================================*/ int UReadTog(int X, int Y,int leng,char *Pc, int attr, char *flags, ...) { /* X, Y , 內定值 , 屬性 ,選擇字元 , 附屬字串 */ va_list ap; int max=0,run=0,sw=ON; char *str,*ptr[10],old=*Pc ? *Pc : UGetC(X,Y); /*無內定,抓螢幕值*/ char buf[81]; leng=0; /* 自動計算 */ va_start(ap,flags); while(*(flags+max)) { str=va_arg(ap,char*); ptr[max]=str; /*指向附屬字串 */ leng=max(leng,strlen(str)+2); max++; } UETKbSet(ET_ENGLISH); UClKbBuf(); /*英文 mode*/ do { do { sprintf(buf,"%c %s",*(flags+run),ptr[run]); /*組合選擇字元 + 附屬字串*/ UShowSL(X,Y,leng,buf,attr); for(;UClock()==NO && !kbhit();); /*一秒*/ run = ++run<max ? run : 0; /*循環*/ } while(!kbhit()); RetKey=UGetKb(); if(RetKey==ENTER||RetKey==ESC||(RetKey & 0xff)==0) /* Enter or function key*/ { *Pc=old; if(RetKey==ENTER) RetKey=RIGHT; break;} /*不變*/ if(strchr(flags,RetKey)==NULL) UWait(ON,"請 輸 入....(%s)",flags); else { *Pc=RetKey; RetKey=RIGHT; Modify=ON; break; } } while(1); va_end(ap); if(*Pc==old) sw=OFF; if(sw) Modify=ON; if(NetWare && NetWritAble==OFF) Modify=OFF; /*網路版且僅有查閱權*/ return sw; } 原始檔-結束
Byron Wey Oct.21.1998