TCHAR *amx_gets(TCHAR *string,int size) { int c=-1,num=0; if (createconsole(0, NULL)) { while (num+1<size && !(c==__T('\r') || c==__T('\n'))) { c=amx_getch(); if (c<0) break; if (c==__T('\r')) c=__T('\n'); /* translate carriage return to newline */ if (c==__T('\b')) { if (num>0) string[--num]=__T(' '); } else { string[num++]=(TCHAR)c; } /* if */ amx_putchar(c); /* echo the character read */ } /* while */ if (num<size) string[num]=__T('\0'); return string; } /* if */ return 0; }
int amx_getch(void) { int c=-1; if (createconsole(0, NULL)) { int cursor=0; if (keyq_start==keyq_end) { amx_putchar(__T('_')); /* must wait for character, so put pseudo-cursor */ cursor=1; } /* if */ while (keyq_start==keyq_end && app!=NULL) { wait_event(app); do_event(app); } /* while */ c=(int)keyqueue[keyq_start]; if (c=='\n') c='\r'; /* enter key must be '\r' for Pawn */ keyq_start=(keyq_start+1)%KEYQUEUE_SIZE; if (cursor) amx_putchar(__T('\b')); /* remove speudo-cursor */ } /* if */ return c; }