[ Programlamaya Giriş ] Temel windows yazılımı
[ Programlamaya Giriş ] Temel windows yazılımı
atelyemizde, c++´in genel yazimi uzerinde durmayacagiz. konularimiz, c++ konusunda baslangictan biraz ilerde bilgi seviyesine sahip kisiler icindir.
öncelikle bilmemiz gereken şey temel bir windows yazılımının nasıl işlediği.
şu adreste, benim yazdığım en temel windows yazılımı bulunmakta.
[url]http://www.kadirilkimen.com/depot/oyun_gelistirme_dersler/basic_windows_application.rar[/url]
burdaki dosyalar devc++ projesi şeklindedir.
hemen her windows altında ek başka bir dosyaya ihtiyaç duymadan çalışabilecek bir exe dosyanız oluşacak. bizim de hedeflediğimiz bu. en yalın yazılım. çünkü en yüksek performansı ancak başka sistemlere bağımlı olmayan yazılımlardan elde edebiliriz.
temel bir windows yazılımı şu şekilde işler
windows, programın özelliklerini belirleyen bir sınıfa sahiptir.
bu sınıf türünde bir değişken yaparak biz de programızın temel özelliklerini belirtiyoruz
ardından, bir pencere değişkeni tanımlayıp, createwindowex fonksiyonu ile, bu değişkenimize istediğimiz niteliklerde bir pencere bağlıyoruz.
son olarak da ShowWindow fonksiyonu ile penceremizi görünür hale getirip, programımızı başlatıyoruz.
ardından while döngüsü ile, programımızı bir kısır döngüye alıyoruz ki, bu döngü içinde sonradan kodlar işleyip programımıza bazı görevler yaptırtalım.
kodlarda adı geçen bu windows prosedürü de ne oluyor?
pencere prosedürü, yazılımımızda bulunan her pencere, her buton, her yazı alanı, kısacası fare klavye ve diğer girdi araçlarıyla iletişimde bulunması gereken her görsel öğe için gerekli bir fonksiyondur.
her buton her yazı alanı ve her pencere için mutlaka ayrıca bir pencere prosedürü tanımlanmalıdır.
ve tabi en önemlisi, programımız da windowstan gelen mesajları dinlemeli ve işlemelidir. bunun içinde programımıza bir pencere prosedürü tanımlamalıyız.
pencere prosedürleri, ,windowstan gelen mesajları dinler ve bizim prosedür içinde tanımladığımız işlevleri yerine getirir. klavye girdileri, fare girdileri, diğer bir çok girdi de windows tarafından programa mesaj olarak gönderilir.
bizim programımızda da bir adet pencere prosedürü var. bu prosedür, program sınıfında programımızın prosedürü olarak tanımlanmış durumda. yani bu prosedürün alacağı mesajlar doğrudan programımıza gelmiş olacak.
şimdilik kodu inceleyin. devamı gelicek elbette
Cvp
bu koddaki hwnd değişkeni, bizim programımızın penceresini tutan değişken. şimdi biz bir koyun yapacaksak, oyunun görüntüsünü render yaptırıp çıkan render sonucu olan bitmap´i bir alana yerleştirerek kullanıcıya göstereceğiz. bunun için biz pratikçe programımızın penceresini kullanacağız. programımıza aynen şunu diyeceğiz :
1 - render mekanizmasını başlat.
2 - çizim alanı olarak programın penceresini kullan
3 - sahne bu
4 - çizime başla
5 - çizimi şu döngüyü takip ederek her döngü işleyişinde yeniden yap
bu aralıkta da biz çizimi oluşturan sahnenin içeriğine müdahale ediyoruz ( mesela ileri tuşuna basıp karakterimizi yürütüyoruz. dolayısıyla sahne yeniden render yapıldığında karakterin daha ileri gitmiş olduğu görülecek... bunu biz saniyede 20 - 30 kere yaptırırsak döngü ile, sonuçta çizim alanı film gibi akıcı görünecek ve biz anlık olarak klavye ve fare ile oyuna gönderdiğimiz sinyallerin oyunu nasıl etkilediğini görerek oyunu yönlendirebilicez.
ama önce windows programının bileşenlerini tanımalıyız.
bu kodları bu yüzden incelemeniz ve iyi algılamanız gerek.
bir windows programı WinMain fonksiyonu ile oluşturulur.
program özellikleri windows´a tanıtıldıktan sonra, programın yapacağı işlevler ve görevler sıralanır. program görevini tamamladıktan sonra sonlandırılır.
biz programın bir penceresi olduğundan bahsediyoruz burda ( hwnd= createwindowex ) ardından bir döngü başlatarak biz müdahale etmedikçe programın sadece windowstan gelen mesajları alıp geri göndermesini sağlıyoruz. böylece döngümüz durdurulmadıkça programımız da kapanmayacak. biz de bu döngü içine oyunumuzun içindeki değişimleri oluşturacak kodları ve ekran görüntüsünü alıp bize getirecek render mekanizmasını yazarsak, oyun durdurulana kadar render yapıp görüntüyü bize sunacaktır.
temel windows programını öğrendiğimize göre 2. bölümden itibaren bir windows programına opengl´nin nasıl entegre edileceğini görelim.
Cvp
ben elbette bıraz gec kaldım bu ıse baslamaktan ama bu lınkte bozuk dostum bunun yerıne bız C++ kendı derleyıcısını kullansak nasıl olur?
ve ılerı sevıyede bı c kullanıcısı degılım!...
anlamadıgım yer olursa buraya yazarım haaaa[:O]
Cvp
ok. onu da düzelttim. host değişimi yüzünden ufak bi aksilik oluştu da :)
Cvp
kad´r hocam bu linktede bi hata var bi ara tum linkleri kont rol etseniz indiremiyoruz da
Cvp
oyun yapmak için oyunmotoruna ihtiyaç duyabiliriz tabi oyununa göre değişir 3 farklı renkteki topların havaya kaldırıp indirmek yada buna benzer oyunları visual basic ile yazabiliriz hem giriş seviyesi için daha ideal olur hemde temel windows yazılımı için yada programlama giriş için...yanlışda olabilirim sadece düşüncemi yazdım sonraki aşamalarda tabiki c c++ pearl gibi vedaha birçok dil öğrenilebilir ama çok farklı ve özgün programlar yazmak yada derlemek için zor ama piton oldukça sağlam