#include <ncurses.h>
WINDOW *create_newwin(int alto, int ancho, int iniciary, int iniciarx);//Crea una ventana
void destroy_win(WINDOW *ventana_local);//Destrye una ventana
int main(int argc, char *argv[]){
WINDOW *mi_ventana;
int iniciarx, iniciary, ancho, alto;
int ch;
initscr();
cbreak();
keypad(stdscr, TRUE); //Ayuda usar las teclas F1, F2, Arriba...
alto = 3;
ancho = 10;
iniciary = (LINES - alto)/2;
iniciarx = (COLS - ancho)/2;
printw("Presiona F2 para salir");
refresh();
mi_ventana = create_newwin(alto,ancho,iniciary,iniciarx);
while((ch = getch()) != KEY_F(2))
{
switch(ch)
{
case KEY_LEFT:
{
destroy_win(mi_ventana);//Destruye la ventana para crear otra venta en la posicion
mi_ventana = create_newwin(alto, ancho, iniciary, --iniciarx);
break;
}
case KEY_RIGHT:
{
destroy_win(mi_ventana);
mi_ventana = create_newwin(alto, ancho, iniciary, ++iniciarx);
break;
}
case KEY_UP:
{
destroy_win(mi_ventana);
mi_ventana = create_newwin(alto, ancho, --iniciary, iniciarx);
break;
}
case KEY_DOWN:
{
destroy_win(mi_ventana);
mi_ventana = create_newwin(alto, ancho, ++iniciary, iniciarx);
break;
}
}
}
endwin();
return 0;
}
WINDOW *create_newwin(int alto, int ancho, int iniciary, int iniciarx)
{
WINDOW *ventana_local;
ventana_local = newwin(alto, ancho, iniciary,iniciarx);
box(ventana_local,0,0);
mvwprintw(ventana_local,(alto/2),((ancho/2)-2),"Hola!");
wrefresh(ventana_local); /*Muestra la ventana*/
return ventana_local;
}
void destroy_win(WINDOW *ventana_local)
{
wborder(ventana_local,' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ');
/*Los parametros pasados a la función wborder() son
* 1.ventana = la ventana en la cual se encuentra
* 2.li = Carácter usado para el lado izquierdo de la ventana
* 3.ld = Carácter usado para el lado derecho de la ventana
* 4.la = Carácter usado para el lado de arriba de la ventana
* 5.lb = Carácter usado para el lado de abajo de la ventana
* 6.ti = Carácter usado para la esquina izquierda de la ventana -arriba
* 7.td = Carácter usado para la esquina derecha de la ventana -arriba
* 8.bi = Carácter usado para la esquina izquieda de la ventana -abajo
* 9.bd = Carácter usado para la esquina derecha de la ventana -abajo
* */
wrefresh(ventana_local);
delwin(ventana_local);
}