原始程式

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


回首頁C之城