PDCurses. Las curses para windows
October 22, 2007 5:12 am ProgramaciónBueno hoy toca hablar de curses, curses es un conjunto de librerías para el control de terminales en sistemas Unix que entre otras cosas proporciona a los programadores la facilidad de crear interfaces en modo texto TUIs. Aunque curses ya es descontinuado, existe ncurses para unix/linux/etc., y para windows está la razón de esta nueva entrada en el blog, PDCurses.
Lo que me llevó hasta PDCurses fue que en la universidad nos pidieron hacer un editor de texto en modo consola ( no puse texto porque sonaría muy redundante
) y bueno, me rehusaba a volver en aquellos tiempos que por “ignorante” tenía que usar el compilador de Borland (si el mismo que todos alguna vez usamos), el flamante TurboC.
Para empezar hay poca documentación de PDCurses en la red, al menos en español xD. Así que hay dos fuentes seguras sobre la API que implementa PDCurses( en inglés
):
http://www.opengroup.org/onlinepubs/007908799/cursesix.html
http://pdcurses.sourceforge.net/doc/PDCurses.txt
Yo llevo mirando la información hace como 2 hrs
(si, medio torpe yo xD) y ya he realizado lo que sería el menú de la aplicación (sólo el menú) o una parte de él
, el código es el siguiente:
/*
Based on: http://www.linux.cz/noviny/1998-1112/clanek11.html
*/
#include <stdlib.h>
#include <ctype.h>
#include <curses.h>
#define COLOR1 1
//{#define COLOR2 2
int main () {
int c;
char *s;
initscr ();
cbreak ();
noecho ();
start_color ();
keypad (stdscr, TRUE);
curs_set(0);
if (!has_colors ()) {
endwin ();
fputs ("No colors!", stderr);
exit (1);
}
init_pair (COLOR1, COLOR_WHITE, COLOR_BLUE);
attron(COLOR_PAIR( COLOR1 ));
mvaddstr(LINES-25,COLS-57,"| (A)rchivo | (E)dicion | (S)alir |");
mvaddstr (LINES-1, COLS-20, "Press F10 for end.");
while ( (c=getch()) != KEY_F(10)) {
s = (char *) keyname(c);
if (s){
//mvprintw (10, 20, "'%s'", s);
if(*(s)=='A'){
mvaddstr(LINES-24,COLS-57,"| Guardar |");
mvaddstr(LINES-23,COLS-57,"| Abrir |");
}
else if(*(s)=='E'){
mvaddstr(LINES-24,COLS-45,"| Modificar |");
}
else{
mvaddstr(LINES-24,COLS-57,"");
insdelln(-2);
insdelln(+2);
}
}
//else
//mvprintw (10, 20, "'%c'", (isprint(c) ? c : '.'));
}
erase ();
refresh ();
endwin ();
return 0;
}
Screenshot:
El programita hace lo siguiente:
- Muestra un menú en la parte superior en la pantalla a partir de la columna 23 y fila 0 (ventana de 25×80)
- Cuando se pulsa “A” (A mayúscula) muestra un submenú para Abrir|Guardar un archivo por debajo de la leyenda: Archivo (cosa que todavía no hace XD)
- Cuando se pulsa “E” (E mayúscula) muestra un submenú para Modificar un archivo por debajo de la leyenda: Edición (no implementado aún)
- Para salir del programa, se puede pulsar F10
Eso es todo
, eso es la parte más sencilla del editor de texto jajaja
. Lo importante es irme familiarizando con las librerías para poder avanzar en lo demás.
Por cierto, estoy usando Dev C++ para compilarlo
( no me pregunte porque estoy usando windows
).
Nos vemos.
Califica el tema:Temas Relacionados:

(2 votes, average: 4 out of 5)
October 22nd, 2007 at 5:39 am
ps como te digo eres un chingon :-#
jeje ps ni hablar, namas te falta tiempo para realizar lo que te propones,
sigue haciendo lo que te gusta , que lo haces muy bien :p
sin mas que decir =*********
October 22nd, 2007 at 3:40 pm
dame mas borland (8)
no se porque me vino a la mente =x
en fin
cuidate =P y deja de estresarte tanto =)****
-.- raro esto, bue me largo xD
January 1st, 2008 at 8:56 pm
muchas gracias por compartir esto, se nota que te gusta lo que haces, te felicito.. DTB