Ekran Görüntüsünün Tazelenmesi
Önceki Ncurses'a Giriş Sonraki
Ekran Görüntüsünün Tazelenmesi
WINDOW * yapısı içinde pencerenin eni, boyu, konumu gibi bilgiler tutulduğu gibi içeriği de saklanır. ncurses işlevleri ile bir pencereye yazı yazıldığı zaman bu o yazının hemen ekranda görünmesi anlamına gelmez. Yazılan yazı öncelikle ilgili pencerenin içeriğinde güncellenir. Ekran görüntüsünün güncellenmesi için refresh ya da wrefresh işlevlerinın çağrılması gerekir.
stdscr ile curscr arasında yukarıda kafanıza takılmış olabilecek fark buradadır. curscr ekranın o anki görüntüsünü içerirken, stdscr'nin içeriği yapılmış yeni işlev çağrıları sonucu farklı olabilir. stdscr ile curscr'nin örtüşmesi için refresh işlevinin çağrılması gerekir. Diğer bir deyişle, curscr'nin içeriğini stdscr'nin içeriği ile değiştiren tek işlev refresh işlevidir. Sizin curscr'yi kurcalamamanız ve onunla ilgili işleri refresh işlevine havale etmeniz tavsiye edilir.
refresh işlevi ekranı güncelleme işini mümkün olduğunca hızlı yapabilmek için değişik bir mekanizmaya sahiptir. İşlev çağrıldığında görüntüsü güncellenecek olan pencerenin yalnızca değişen satırlarını günceller. Böylece değişmeyen satırları yeniden ekrana yazmak için işlemci zamanı tüketmez. ncurses ile standart giriş/çıkış kütüphanesi işlevlerinın birlikte kullanılmasının istenmeyen sonuçlar doğurmasının sebebi bu mekanizmadır; ncurses işlevleri bir pencereye yazdığı zaman o satırın değiştiğini belirten bayrağı doğrularlar, standart giriş/çıkış işlevleri ise bu işi yapmaz.
refresh ile wrefresh işlevleri temelde aynı işi yaparlar. wrefresh işlevi parametre olarak WINDOW * türünde bir akım alır ve bu pencerenin görüntüsünü günceller. refresh() ise wrefresh(stdscr) çağrısı yapmaya denktir. Daha sonra da bahsedeceğim gibi birçok ncurses işlevinin (wrefresh gibi) stdscr için yazılmış makroları vardır.
Önceki Üst Ana Başlık Sonraki
Temel Bilgiler Başlangıç Yeni Pencerelerin Oluşturulması
Bir Linux Kitaplığı Sayfası