Üye Kayıt Üye Giriş

Curses Kütüphanesi


Curses Kütüphanesi

Unix sistemlerine çok çeşitli terminaller bağlanabilmektedir. Doğal olarak bu terminallerin
görüntü kapasiteleri birbirlerinden farklıdır. Terminallerde bir ara birim oluşturmak amacıyla
Escape kodlaması düşünülmüştür. Yani bir terminale önce 27 numaralı Escape karakteri
gönderip, sonra bir sol köşeli parantez”[” ve bir takım karakterler verildiğinde bunları
doğrudan görüntülemez. Bunlar yerine bir takım işlemler yapar. Bu escape karakterlerinin
kullanımı ve anlamı terminaller arasında farklılık göstermektedir. Bazı terminaller ANSII
uyumludur. ANSII’nin ayrı bir terminal kapasitesi vardır. Unix sistemlerinde genellikle
sisteme bağlı bulunan terminaller hakkındaki genel escape sistemi ve diğer özellikler
/etc/termcap dosyası içerisinde yer almaktadır. Curses kütüphanesi aslında arka planda
bu termcap dosyasına bakarak uygun escape kodlamalarını oluşturmaktadır.


Curses İşlemlerinin Başlatılması ve Bitirilmesi
Curses kullanırken önce initscr isimli bir başlangıç fonksiyonu çağrılır. Prototipi;
WINDOW *initscr(void);
Bu fonksiyon bir takım ilk işlemleri yapar ve ekranın bütününe ilişkin pencereyi betimleyen
bir handle değerine geri döner. Fonksiyon başarısızlık durumunda NULL değerine geri döner.
İşlemler bitirildiğinde programcı endwin fonksiyonunu çağırmalıdır. Fonksiyonun prototipi;
int endwin(void);
curses kütüphanesinin kullanılabilmesi için curses.h dosyasının include edilmesi gerekir.
Bütün curses fonksiyonları özel bir kütüphane içerisindedir. Bu kütüphane normal curses için
libcurses.a ve eski curses için libncurses.a dir.
/*cur.c*/
#include <stdio.h>
#include <stdlib.h>
#include <curses.h>
int main(void)
{
WINDOW *win;
if ((win = initscr()) == NULL) {
fprintf(stderr, “Can not initialize curses..\n”);
exit(1);
}
return 0;
}

 


Curses Fonksiyonlarını İsimlendirme Biçimi

Önek almayan curses fonksiyonları o andaki aktif pencere üzerinde işlem yaparlar. O andaki
aktif pencere stdscr değişkeni tarafından belirlenmektedir. “w” öneki alan fonksiyonlar
birinci parametre olarak pencere handle değerini alırlar ve o pencereye dayalı işlem yaparlar.
“mv” öneki alan fonksiyonlar koordinat parametresi alıp önce curser’ı o koordinata çeker,
sonra işlemi yaparlar. mv ve w önekleri birlikte mvw olarak kullanılabilmektedir. Genel
olarak curses fonksiyonlarının çoğunun geri dönüş değerleri int türündendir. Bu fonksiyonlar
başarısızlık durumunda ERR değerine, başarı durumunda ise OK değerine geri dönerler.


Curser Konumlandıran Fonksiyonlar
Bu fonksiyonlar move ve wmove fonksiyonlarıdır. Fonksiyonların prototipleri;


int move(int x, int y);
int wmove(WINDOW *win, int x, int y);


curses fonksiyonlarında ekran koordinatları önce satır sonra sütün parametreleri ile belirlenir.


/*curses.c*/
#include <stdio.h>
#include <stdlib.h>
#include <curses.h>
int main(void)
{
WINDOW *win;
if ((win = initscr()) == NULL) {
fprintf(stderr, “Can not initialize curses..\n”);
exit(1);
}
move(10, 10);
getch();
wmove(win, 0, 0);
getch();
endwin();
return 0;
}

Bilgisayar Dershanesi Ders Sahibi;
Bilgisayar Dershanesi

Yorumlar

Yorum Yapabilmek İçin Üye Girişi Yapmanız Gerekmektedir.

ETİKETLER