EVA.P2

Emulación de <<conio>> para Dev-C++

Introducción
Aunque se trate de una librería no estándar, conio se ha convertido para muchos programadores educados o acostumbrados a compiladores de Borland® en una herramienta imprescindible para crear programas de consola.
Adicionalmente, cuando se crean aplicaciones de consola usando compiladores para Windows, como Dev-C++, a menudo necesitamos compilar programas escritos originalmente para compiladores Borland®. O sencillamente, queremos dotar a nuestros programas de consola de una apariencia más amigable y agradable.
Es cierto que Dev-C++ incluye una emulación de conio, pero a nuestro juicio no es lo bastante fiel en cuanto a comportamiento a la original de Borland®. Sobre todo en funciones de ventanas, lecturas sin eco en pantalla, y en funciones como "kbhit", que o bien no se emulan, o se hace de forma incompleta.
Por supuesto, no todas las funciones y macros se han emulado, hay algunas con las que no es posible hacerlo, concretamente las que relacionadas con entrada y salida de puertos: "inp", "inport", "inportb", "inpw", "outp", "outport", "outportb" y "outpw"; ya que estas macros colisionan con el control del hardware de Windows.
Al contrario que sucede con los compiladores de Borland®, en el que la librería está incluída en el compilador, cuando se trabaja con otros compiladores es necesario incluir el código objeto en la fase de enlazado o bien el fichero fuente conio.c como parte del proyecto. También se puede crear una librería estática (ver creación de librerías estáticas), que es lo que haremos en este artículo.
Instalación y configuración de la librería conio.h para Dev-Cpp de Windows
Si tienes instalado Dev-cpp sobre Windows debes seguir los siguientes pasos:
Descarga la librería conio de la siguiente dirección y grábala en cualquier directorio de tu PC, puedes descargarla de: ftp://ciclope.unicauca.edu.co/conio1_3.zip o también de: http://c.conclase.net/devcpp.php?art=conio
Descomprime este directorio y encontrarás los siguientes archivos:
conio.h,
conio.c
libconio.a:
text.c:
conio-lib.dev:
conio-eje-a.dev:
conio-eje-c.dev:
6-Console_conio.template,
ConsoleConio_c.txt
ConsoleConio_cpp.txt:
Ahora, debes copiar el archivo "libconio.a" al directorio "C:\Dev-Cpp\lib", suponiendo que tengas instalado Dev-C++ en el disco "C:". Después, habría que copiar los archivos "conio.h" y, opcionalmente, "conio.c" en el directorio "C:\Dev-Cpp\include". Si los archivos ya existen sobreescríbelos sin miedo!

Listo ahora ya puedes hacer programas que incluyan la librería conio.h con todas sus funciones para manejo de ventanas y colores. No olvides que debes crear un proyecto y adicionar el archivo conio.c al proyecto para que se pueda compilar el programa.

EJEMPLOS
EJEMPLO 1. Si gustas puedes correr el proyecto conio-eje-c.dev, que es un ejemplo de cómo funciona la librería conio.h y utiliza muchas de las funciones conocidas como window(), gotox(), textbackcolor(), etc. Una referencia completa a las funciones de la conio la puedes encontrar en la dirección: http://c.conclase.net/Borland/libreria.php?lib=conio
EJEMPLO 2. A continuación se muestra otro ejemplo muy sencillo del uso de la libreria conio.

/*
*****************************************************
Ejemplo del uso de conio
--------------------------------------------
Programa que calcula el duplo de un número
Agosto 11 de 2005
--------------------------------------------
Autor: W. Libardo Pantoja Yépez
******************************************************
*/
#include <conio.h>
#include <string.h>
void dibujarCuadro(int,int,int,int);

void dibujarCuadro(int x1,int y1,int x2,int y2)
{
    int i;
    for (i=x1+1;i<x2;i++)
    {
        gotoxy(i,y1); cputs("-") ;//linea horizontal superior
        gotoxy(i,y2); cprintf("-") ;//linea horizontal inferior
    }

    for (i=y1+1;i<y2;i++)
    {
        gotoxy(x1,i); cprintf("|") ;//linea vertical izquierda
        gotoxy(x2,i); cprintf("|") ;//linea vertical derecha
    }
}

int main(int argc, char *argv[])
{
    int n;
    clrscr();//limpia TODA LA pantalla
   
    //crea una ventana COMPLETA de fondo azul claro
    window(1,1,80,25);
    textbackground(LIGHTBLUE);//fondo de la pantalla AZUL CLARO
    clrscr();
   
    //Ventana de fondo o sombra NEGRA
    window(4,4,79,24);//crea una ventana en estar cordenadas
    textbackground(BLACK);
    clrscr();
   
    //ventana principal donde se solicitan datos
    window(2,2,77,22);//crea una ventana en estar cordenadas
    textbackground(GREEN);//fondo de la pantalla verde
    textcolor(YELLOW);//color de la letra amarillo
    clrscr();
    dibujarCuadro(1,1,75,21);//Cuadro grande
    dibujarCuadro(3,3,73,5);//Cuadro titulo
    gotoxy(16,4);
    textcolor(WHITE);//establece el color de fondo en blanco
    cprintf("Programa Que Calcula El Duplo De Un Numero");
   
    gotoxy(3,7);cprintf("Digite un numero entero: ");scanf("%d",&n);
    gotoxy(3,9);cprintf("El duplo de %d es %d",n,2*n);
    gotoxy(3,18);cprintf("Presione cualquier tecla para terminar...");
    getch();
    return 0;

}

No hay comentarios:

Publicar un comentario