#include "cscreen.h"
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
 
...
 
/* SetUpper */
int SetUpper(int x,int y,int nColor,int nSize,int bSpecialChr,char *lpszString)
{
CScreen Scr;
unsigned char nMaxx;
unsigned char nMaxy;
int nChr=0;
int bFlag;
int i;
int j;
 
/* validaciones de posicion donde se va a imprimir el texto ,color,bla bla bla...*/
  Scr.GetMaxx(nMaxx);
  Scr.GetMaxy(nMaxy);
  if (x<1) x=1;
  if (x>=nMaxx) x=nMaxx-1;
  if (y<1) y=1;
  if (y>=nMaxy) y=nMaxy-1;
 
  if ((nColor<0)||(nColor>15)) nColor=15;
  if (nSize<0) nSize=0;
  if (nSize>((nMaxx+1)-x)) nSize=x-1;
  
  memset(lpszString,' ',nSize);
  textcolor(nColor);
 
  i=0;
  j=0;
  do
  {
    gotoxy(x+j,y);
    do
    {
      bFlag=0;
      lpszString[i]=getch();
/* si presiona ESC o ENTER salir */
      if (lpszString[i]==13) bFlag=2;
      if (lpszString[i]==27)
      {
        bFlag=2;
        nChr=(int)lpszString[i];
      }
/* caracteres validos */
      if (lpszString[i]== 8) bFlag=1;
      if (lpszString[i]==32) bFlag=1;
      if (lpszString[i]==45) bFlag=1;
      if (lpszString[i]==95) bFlag=1;
 
      if ((lpszString[i]>=97) && (lpszString[i]<=122))
        lpszString[i]=lpszString[i]-32;
 
      if ((lpszString[i]>=48) && (lpszString[i]<=57)) bFlag=1;
      if ((lpszString[i]>=65) && (lpszString[i]<=90)) bFlag=1;
/*otros caracteres eventualmente validos(segun el valor parametro correspondiente)*/
      if (bSpecialChr)
      {
        if (lpszString[i]==46 ) bFlag=1;
        if (lpszString[i]==47 ) bFlag=1;
        if (lpszString[i]==123) bFlag=1;
        if (lpszString[i]==125) bFlag=1;
        if (lpszString[i]==126) bFlag=1;
 
        if ((lpszString[i]>=33) && (lpszString[i]<=44)) bFlag=1;
        if ((lpszString[i]>=58) && (lpszString[i]<=64)) bFlag=1;       
        if ((lpszString[i]>=91) && (lpszString[i]<=94)) bFlag=1;
      }      
    }/*no deja continuar hastar que ingrese un put.. caracter valido >:<(*/
    while (!bFlag);
 
    if ((bFlag==1) && (i<=nSize))/*si por fin ingreso el put.. caracter |:(*/
    {/*