#include void menu(WINDOW *ventana, int renglon, int ant) { wattroff(ventana, A_BOLD); switch (renglon) { case 1: if (ant==4) mvwprintw(ventana, ant,1,"Salir "); if (ant==2) mvwprintw(ventana, ant,1,"Bajas "); wattron(ventana,A_BOLD); mvwprintw(ventana, renglon,1,"Altas"); break; case 2: if (ant==1) mvwprintw(ventana, ant,1,"Altas "); if (ant==3) mvwprintw(ventana, ant,1,"Consulta"); wattron(ventana,A_BOLD); mvwprintw(ventana, renglon,1,"Bajas"); break; case 3: if (ant==2) mvwprintw(ventana, ant,1,"Bajas "); if (ant==4) mvwprintw(ventana, ant,1,"Salir "); wattron(ventana,A_BOLD); mvwprintw(ventana, renglon,1,"Consulta"); break; case 4: if (ant==3) mvwprintw(ventana, ant,1,"Consulta"); if (ant==1) mvwprintw(ventana, ant,1,"Altas "); wattron(ventana,A_BOLD); mvwprintw(ventana, renglon,1,"Salir "); break; default: mvwprintw(ventana, 1,1,"Altas "); mvwprintw(ventana, 2,1,"Bajas "); mvwprintw(ventana, 3,1,"Consulta"); mvwprintw(ventana, 4,1,"Salir "); } wrefresh(ventana); } void despliega_color(WINDOW *dos, int vez) { if (vez==1) { wattron(dos, COLOR_PAIR(1)); mvwprintw(dos, 1,1,"abcbcbdhasjhakdhawidy"); wattroff(dos,COLOR_PAIR(1)); wattron(dos, COLOR_PAIR(2)); mvwprintw(dos, 4,1, "esta es otra ventana"); wattroff(dos, COLOR_PAIR(2)); wattron(dos, COLOR_PAIR(3)); mvwprintw(dos, 5,1, "esta es otra ventana"); wattroff(dos, COLOR_PAIR(3)); wattron(dos, A_STANDOUT); mvwprintw(dos, 6,1, "esta es otra ventana"); } else { wattron(dos, COLOR_PAIR(2)); mvwprintw(dos, 8,1, "abcdefg esta es otra ventana"); wattroff(dos, COLOR_PAIR(2)); } wrefresh(dos); } WINDOW *create_newwin(int height, int width, int starty, int startx); void destroy_win(WINDOW *local_win); int main(int argc, char *argv[]) { WINDOW *my_win, *ventana2; int ch, ren=4, anterior=3, vez=1; initscr(); cbreak(); keypad(stdscr, TRUE); attron(A_BOLD); printw("Presionar F1 para salir"); attroff(A_BOLD); refresh(); if (has_colors()==FALSE) { mvprintw(5,2,"Tu terminal no soporta colores"); exit(1); } my_win=create_newwin(10/*alto*/, 30/*ancho*/, 3/*renglon*/, 2/*col*/); start_color(); init_pair(1, COLOR_BLACK, COLOR_WHITE); init_pair(2, COLOR_RED, COLOR_BLACK); init_pair(3, COLOR_CYAN, COLOR_MAGENTA); wattron(my_win, COLOR_PAIR(1)); menu(my_win, 5, 0); menu(my_win, 4, 3); while((ch=getch()) != KEY_F(1)) { switch(ch) { case KEY_UP: anterior=ren; if (ren==1) ren=4; else ren--; menu(my_win, ren, anterior); break; case KEY_DOWN: anterior=ren; if (ren==4) ren=1; else ren++; menu(my_win, ren, anterior); break; case KEY_LEFT: destroy_win(my_win); ventana2=create_newwin(20,40,3,35); despliega_color(ventana2, vez); destroy_win(ventana2); my_win=create_newwin(10/*alto*/, 30/*ancho*/, 3/*renglon*/, 2/*col*/); wattron(my_win, COLOR_PAIR(1)); menu(my_win, 5, 0); menu(my_win, ren, anterior); break; } } destroy_win(my_win); endwin(); return 0; } WINDOW *create_newwin(int height, int width, int starty, int startx) { WINDOW *local_win; local_win=newwin(height, width, starty, startx); box(local_win, 0, 0); wrefresh(local_win); return local_win; } void destroy_win(WINDOW *local_win) { /*wborder(local_win, ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '); wrefresh(local_win);*/ delwin(local_win); }