Dibujar campos ("cajas de texto") en c para MS-DOS

Iniciado por nicolas2013alcubo, 5 Mayo 2013, 05:15 AM

0 Miembros y 1 Visitante están viendo este tema.

nicolas2013alcubo

Uso el Turbo C++ 3.0 en Windows 7 y usando el DOSBOX. Bueno, mi duda es la siguiente: Yo quiero hacer un programita que pida el ingreso de un número, string, lo que sea y que al dado del mensaje de solicitud (prompt), ejemplo "Ingrese un valor numérico: " me dibuje el campo o espacio donde el usuario ingrese el valor. Sería el equivalente a lo que se hace en el lenguaje Clipper 5.2. Un código como este:

n=0
clear
@5,1 say "Ingrese un valor numérico:" get n picture '999999'
read

En este caso el clipper ya viene con esa cláusula llamada PICTURE que es la que nos dibuja ese campo (El programita este muestra los caracteres blancos sobre un fondo negro y el campo que se dibuja es de color blanco donde lo que ingresa el usuario se ve negro, video invertido jajaja).

En C hacer un programa que pida el ingreso de un número sería así el código:

#include<stdio.h>
#include<conio.h>
void main(void)
{
int n;
clrscr();
gotoxy(1,5);printf("Ingrese un valor numérico: ");
scanf("%d",&n);
}

El tema que este programa en C mostraría el prompt (Mensaje de solicitud), pero después sólo el cursor titilante, pero no sabría cómo hacer para dibujar el campo video invertido, o sea crear el mismo efecto que en Clipper. Ayuda, please. Saludos. Nico :D


nicolas2013alcubo

#2
Respondan que necesiti sacarme la duda esta

nicolas2013alcubo

¿Por què no responden?. No es dificil entender lo que quiero hacer, ya que en absolutamente todos los programas de bases de datos que corrían bajo D.O.S (Programas de administración de comercios, farmacias, bancos, etx. aparecían constantemente cajas de texto donde el operador ingresaba por ejemplo el artículo de los producto, códigos de clientes, etc. Es lo más conocido que hay. En Clipper para crear cajas de texto se usa la cláusula PICTURE, C no tiene ninguna función para hacer eso, por lo que todo se hace manualmente. Respondanme cómo crear en C cajas de texto de forma manual. Es conocido eso.

-- KiLiaN --

Busca sobre librerías gráficas en el foro o en google.
Entren al chat de elhacker.net
    
   

@kln13

BlackM4ster

No te vamos a hacer el trabajo .__.
Busca en Google
- Pásate por mi web -
https://codeisc.com

rir3760

Cita de: nicolas2013alcubo en  6 Mayo 2013, 14:42 PM¿Por què no responden?.
Supongo se debe a que la ayuda aqui es voluntaria (en el tiempo libre), si a eso le sumas que tu pregunta es en Domingo ...

Cita de: nicolas2013alcubo en  6 Mayo 2013, 14:42 PMNo es dificil entender lo que quiero hacer, ya que en absolutamente todos los programas de bases de datos que corrían bajo D.O.S
Los dias de Clipper y dBase IV sobre MS-DOS fueron hace unos veinte años ...

Para lo que deseas debes utilizar una biblioteca de terceros o el API de tu sistema operativo. En mi opinion lo mas facil es mediante ncurses, cuestion de buscar un buen curso.

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

nicolas2013alcubo

Yo lo que encontrè en la librería conio.h son funciones que lo que hacen es cambiar el fondo y el color del texto en pantalla. Son textbackground y textcolor respectivamente. No sè si a ciencia cierta podrían ayudar a crear esos textboxes, pero calculo que se usan mucho wn el diseños de esos menúes en los que con las flechas de los cursores se "resalta" la opción a seleccionar y con Enter se confirma la seleccion. Para el que me dijo que no me ca a hacer el trabajo: Y si es fácil hacerlo, sólo es un ejemplo en que se pide el ingreso de un dato cualquiera y al lado del prompt me dibuje el cuadro de texto.

nicolas2013alcubo

Chicos: Logré usar el textbackground y el textcolor para hacer un textbox. Observen el código fuente de mi programita:

#include<stdio.h>
#include<conio.h>
int main(void)
{
char nombre[20];
textbackground(BLUE);
textcolor(YELLOW);
clrscr();
gotoxy(9,10);cprintf("Tu nombre: ");
textbackground(WHITE);
textcolor(0);
gotoxy(20,10);cprintf("                    ");
gotoxy(20,10);
gets(nombre);
getch();
clrscr();
return 0;
}


El problema ahora es el siguiente: Si yo escribo sobre ese campo y me sobrepaso de los 20 caracteres yo puedo seguir escribiendo fuera del campo blanco (Sigo escribiendo lo que se me dé la gana fuera del textbox). ¡Cómo podría limitar la cantidad de caracteres que pueda escribir, cosa de no sobrepasarme de la caja de texto?. Raro, porque si yo defini char nombre[20]; estoy indicando que la cadena o string va a tener 20 caracteres, por lo que no debería seguir rescribiendo más de ahí. Ayuda, please. Saludos.