12.07.2015 Views

bu döküman kaan aslan tarafından c ve sistem ... - Kitabxana

bu döküman kaan aslan tarafından c ve sistem ... - Kitabxana

bu döküman kaan aslan tarafından c ve sistem ... - Kitabxana

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

}}}Pencere Mesajlarının İşlenmesi: Anımsanacağı gibi işletim <strong>sistem</strong>i üst ya da alt pencere üzerindebir işlem gerçekleştiğinde gerçekleşen işleme ilişkin bir mesajı pencerenin yaratıldığı thread inmesaj kuyruğuna eklemektedir. Mesaj kuyruğundan mesajı alıp işleyen fonksiyon Application.Runfonksiyonlarıdır. Bir mesaj karşısında programcının belirlediği bir kod u çalıştırması gerekir. Buişlem biraz karmaşık bir süreçle gerçekleşmektedir..net ortamı yaratılan her pencerenin pencere ister alt ister ana pencere olsun control referansınıkendi içinde bir collection da saklar. Örneğin bir anapencere üçte alt pencere söz konusu olsun. Bupencerelerinin hepsi dolaylı olarak control sınıfından türetilmiştir.w1w2 w3 w4Burada .net ortamı <strong>bu</strong> dört pencerenin control referansınıda collection içinde tutuyor durumdadır.Windows un kuyruğa bıraktığı her mesajın en azından ortak bazı bileşenleri vardır. Örneğinwindows her mesaj için o mesaj hangi pencereye ilişkin olduğunu belirten bir handle değeri içerir.Aynı zamanda her mesajın bir numarası vardır. Mesajın numarası mesajın hangi olaydan dolayıkuyruğa bırakıldığını belirtmektedir. Ayrıca her mesaj ila<strong>ve</strong> bazı parametrik bilgilere sahiptir.Application.Run fonksiyonları kuyruktan mesajı alır. Mesajın handle değerinden haraketleCollection içinde arama yaparak mesajın ilişkin olduğu pencerenin control referansını elde eder.Application.Run fonksiyonları mesajın ilişkin olduğu control referansını <strong>bu</strong>lduktan sonra mesajnumarasını inceler. Her mesaj için control sınıfının bir tane OnXXX isimli protected bir sanalfonksiyonu vardır. İşte Run fonksiyonları mesajın numarasına bakarak ilgili control referansınıkullanıp sanal OnXXX fonksiyonlarını çağırmaktadır. Yukarıdaki açıklamalara göre programcı birolay gerçekleştiğinde kendi kodunun çalışmasını şöyle sağlayabilir.1. Programcının ilgili mesaj olayı için çağrılacak OnXXX fonksiyonunu bilmesi gerekir.2. Programcı belirlediği OnXXX fonksiyonunu kendi sınıfında O<strong>ve</strong>rride eder. BöyleceApplication.Run fonksiyonları <strong>bu</strong> sanal OnXXX fonksiyonunu çağırdığında programcınınfonksiyonu çağrılmış olur.using System;using System.Windows.Forms;using System.Drawing;namespace CSD{class App{public static void Main(){Application.Run(new MyForm());}29

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!