#include <ncurses.h>
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;
int startx, starty, width, height;
int ch;
initscr(); /* Curses kipini ilklendirme */
cbreak(); /* Satır önbelleği etkisiz, *
* herşeyi bana gönder */
keypad(stdscr, TRUE); /* Şu şeker F1'e ihtiyacım var */
height = 3;
width = 10;
starty = (LINES - height) / 2; /* Pencerenin ortasına yazmak için */
startx = (COLS - width) / 2; /* hesaplama yapılıyor */
printw("Press F1 to exit");
refresh();
my_win = create_newwin(height, width, starty, startx);
while((ch = getch()) != KEY_F(1))
{ switch(ch)
{ case KEY_LEFT:
destroy_win(my_win);
my_win = create_newwin(height, width, starty,--startx);
break;
case KEY_RIGHT:
destroy_win(my_win);
my_win = create_newwin(height, width, starty,++startx);
break;
case KEY_UP:
destroy_win(my_win);
my_win = create_newwin(height, width, --starty,startx);
break;
case KEY_DOWN:
destroy_win(my_win);
my_win = create_newwin(height, width, ++starty,startx);
break;
}
}
endwin(); /* Curses kipi sonu */
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); /* 0, 0 yatay ve düşey çizgiler *
* için öntanımlı karakteri verir */
wrefresh(local_win); /* Kutuyu gösterir */
return local_win;
}
void destroy_win(WINDOW *local_win)
{
/* box(local_win, ' ', ' '); : Bu istenen pencere silme sonucunu
* vermeyecektir. Pencerenin dört köşesi ve
* çirkin küçük bir kısmı kalacaktır.
*/
wborder(local_win, ' ', ' ', ' ',' ',' ',' ',' ',' ');
/* Alınan parametreler şu şekildedir
* 1. win: üzerinde çalışılacak pencere
* 2. ls: pencerenin sol kenarı için kullanılacak karakter
* 3. rs: pencerenin sağ kenarı için kullanılacak karakter
* 4. ts: pencerenin üst kenarı için kullanılacak karakter
* 5. bs: pencerenin alt kenarı için kullanılacak karakter
* 6. tl: pencerenin sol üst köşesi için kullanılacak karakter
* 7. tr: pencerenin sağ üst köşesi için kullanılacak karakter
* 8. bl: pencerenin sol alt köşesi için kullanılacak karakter
* 9. br: pencerenin sağ alt köşesi için kullanılacak karakter
*/
wrefresh(local_win);
delwin(local_win);
}