原始程式
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