Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>NCURSES</strong> <strong>ile</strong> Yazılım Geli¸stirme <strong>NASIL</strong><br />
bası¸sında pencereyi yıkıp yeniden olu¸sturur. Ekran sınırlarının ötesine gitmeyin. Bu sınırların kontrol edilmesi<br />
okuyucuya bir örnek olarak bırakılmı¸stır. ¸Simdi satır satır inceleyelim.<br />
create_newwin() i¸slevi newwin() <strong>ile</strong> yeni bir pencere olu¸sturur ve etrafına box() i¸slevi <strong>ile</strong> bir çerçeve<br />
çizer. destroy_win() i¸slevi ilk önce ’ ’ karakteri <strong>ile</strong> bir çerçeve olu¸sturarak pencereyi ekrandan s<strong>ile</strong>r ve daha<br />
sonra delwin()’i ça˘gırarak onunla ili¸skili belle˘gi geri verir. Kullanıcının bastı˘gı tu¸sa ba˘glı olarak, starty ve<br />
startx de˘gi¸sir ve yeni bir pencere olu¸sturulur.<br />
destroy_win içerisinde gördü˘günüz gibi, wborder yerine box i¸slevini kullandım. Nedeni açıklama<br />
satırlarında yazılı (Atladınız. Biliyorum. Kodu okuyun :–)). wborder, belirt<strong>ile</strong>n 4 kö¸se ve 4 çizgi parametresiyle<br />
pencere etrafına bir çerçeve çizer. Daha açık hale getirmek için, e˘ger wborder’ı a¸sa˘gıdaki ¸sekilde<br />
ça˘gırırsanız:<br />
wborder(win, ’|’, ’|’, ’–’, ’–’, ’+’, ’+’, ’+’, ’+’);<br />
¸söyle bir ¸sey üretir:<br />
+––––––––––––+<br />
| |<br />
| |<br />
| |<br />
| |<br />
| |<br />
| |<br />
+––––––––––––+<br />
9.4. Örnekteki di ˘ger kısımlar<br />
Yukarıdaki örnekte aynı zamanda initscr() kullanımından sonra ekran boyutlarına ilklendir<strong>ile</strong>n COLS ve<br />
LINES de˘gi¸skenlerini kullandı˘gım gözükmektedir. Ekran boyutlarının bulunmasında ve yukarıdaki gibi ekranın<br />
ortasının koordinatlarının bulunmasında faydalı olabilir. getch() bilindi˘gi gibi klavyeden bir tu¸s bilgisi alır ve<br />
basılan tu¸sa kar¸sılık gelen i¸si yapar. Bu ¸sekildeki switch– case kullanımı kullanıcı grafik arayüzü programlamada<br />
çok yaygındır.<br />
9.5. Di ˘ger Çerçeve i¸slevleri<br />
Yukarıdaki program, her tu¸sa basımda bir pencerenin yıkılıp yenisinin olu¸sturulmasından dolayı oldukça verimsizdir.<br />
Bunun için di˘ger çerçeve çizimi <strong>ile</strong> ilgili i¸slevleri kullanarak daha verimli bir program yazalım.<br />
A¸sa˘gıdaki programda mvhline() ve mvvline() kullanarak benzer etki sa˘glanmı¸stır. Bu iki i¸slev basittir.<br />
Belirt<strong>ile</strong>n boyda ve belirt<strong>ile</strong>n konumda yatay ve dü¸sey çizg<strong>ile</strong>r olu¸stururlar.<br />
Örnek 8. Daha çok çerçeve i¸slevi<br />
#include <br />
typedef struct _win_border_struct {<br />
chtype ls, rs, ts, bs,<br />
tl, tr, bl, br;<br />
}WIN_BORDER;<br />
typedef struct _WIN_struct {<br />
int startx, starty;<br />
int height, width;<br />
WIN_BORDER border;<br />
http://belgeler.org Linux Kitaplı˘gı 25 / 90