|
#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); }
|