sto cercando di fare un programmino in C con le librerie ncurses. Il codice del mio programma è:
Codice: Seleziona tutto
#include <stdio.h>
#include <ncurses.h>
#include <signal.h>
int check_keys(void);
main(int argc, char *argv[])
{
/* Dati ’non-ncurses’ */
int key=0, finestra, finestra2;
int dato1=0, dato2=0;
bool first=false;
/* Inizializzazioni ncurses */
(void) initscr(); /* inizializza la libreria curses */
keypad(stdscr, TRUE); /* abilita la mappatura della tastiera */
(void) nonl(); /* non convertire NL->CR/NL in output */
(void) cbreak(); /* prende i caratteri in input uno alla volta, senza attendere il \n */
(void) noecho(); /* nessuna echo dell’input */
(void) nodelay(stdscr, true);
/* Colori per ncurses */
start_color();
init_pair(1, COLOR_WHITE, COLOR_BLACK);
init_pair(2, COLOR_GREEN, COLOR_GREEN);
init_pair(3, COLOR_WHITE, COLOR_BLUE);
init_pair(4, COLOR_CYAN, COLOR_CYAN);
init_pair(5, COLOR_WHITE, COLOR_WHITE);
init_pair(6, COLOR_MAGENTA, COLOR_MAGENTA);
init_pair(7, COLOR_BLUE, COLOR_BLUE);
init_pair(8, COLOR_YELLOW, COLOR_YELLOW);
/* Colora lo sfondo della pagina */
bkgd(COLOR_PAIR(3));
mvprintw(11,2,"Dato 1:"); // Stampa il commento del dato 1
mvprintw(21,2,"Dato 2:"); // Stampa il commento del dato 2
refresh();
for(;;) {
/* Crea la finestra per il primo dato */
finestra=newwin(3,16,10,20);
wbkgd(finestra,COLOR_PAIR(3));
box(finestra,ACS_VLINE,ACS_HLINE); // Bordi della finestra
mvwprintw(finestra,1,2,"%d",dato1); // Stampa il dato nella finestra
/* Crea la finestra per il secondo dato */
finestra2=newwin(3,16,20,20);
wbkgd(finestra2,COLOR_PAIR(3));
box(finestra2,ACS_VLINE,ACS_HLINE); // Bordi della finestra
mvwprintw(finestra2,1,2,"%d",dato2); // Stampa il dato nella finestra
if((key=getch())==KEY_EXIT)
break;
else if((key=getch())==ERR) {
if(first==false){
wrefresh(finestra2);
first=true;
}
if(dato1<10000){
dato1++;
wrefresh(finestra);
}
else {
dato2++;
dato1=0;
wrefresh(finestra);
wrefresh(finestra2);
}
}
}
delwin(finestra);
delwin(finestra2);
endwin();
}
Grazie