ChangeDisplaySettings()


Bir ara eski oyunları indirdiğim bir siteden (oldgames.ru) geçerken gözüme Civilization II takıldı. Strateji oyunlarını o kadar sevmeme rağmen bu ünlü oyunu hiç oynamamştım. Tarihi bir versiyonunu indirdim. Kurdum. Ne güzel, çalıştı. Fakat oyunda bazı eksiklikler hissediyorum. Farkettim ki benim ufaklığın çözünürlüğü yeterli değil. Eeee 8.9'' netbookta oyun oynamaya kalkarsan öyle oluyor. Sağolsunlar güzel bir ekran kartı koymuşlar. Orjinal çözünürlük 1024×600 olmasına rağmen 1024×768'e çevirdiğimde kaymalı da olsa yeterli çözünürlüğe ulaştım. O zaman oyunun bütün arayüzüne erişme imkanım oldu. Fakat oyundan çıktığım zaman çözünürlüğü eski haline getirmem gerekiyordu. Zira ekranın zırt bırt kayması çok sinir bozucu bir şey. Getiriyorum eski haline çözünürlüğü ama oyuna her girişimde 768-600 arasında git gel git gel. Sinir bozucu olmaya başladı. Oyunu sık oynadığım o sıralar bir kısayol tuşu falan aradım ama bulamadım. O zaman kendim çözünürlüğü değiştiren ufak bir program yazayım dedim. Ne de olsa Win32'ye biraz da olsa aşinalığım var.

Açtım MSDN Library'yi ara babam ara, çözünürlüğü değiştirecek bir fonksiyon bulamadım gitti. Çok uzun uğraşlarıma rağmen nafile! Olmadı. Ben de vazgeçtim. Ama unutmadım. İçimde kaldı. Bu sabah nerden aklıma estiği başka bir hikaye: yine MSDN Library'yi açtım. Başka bir fonksiyonu ararken aklıma yukarıda bahsettiğim ekran çözünürlüğünü değiştirecek fonksiyon (sınıf da olabilir, makro da ne olursa olsun arıyoruz işte) aramak geldi. 😀 he he bu sefer buldum ama. İlginç olan: önce fonksiyonun çağrıldığı zaman bütün pencerelere gönderdiği mesajı WM_DISPLAYCHANGE 'i buldum. Onu bulunca ChangeDisplaySettings fonksiyonunu bulmak zor olmadı. Henüz denemedim. Fonksiyonun kullanımı basit ama parametrelerinden biri olan DEVMODE yapısı (structure ı) kafamı karıştırdı. O yüzden daha geniş bir zamanda inleceyeceğim. Ve hayallerimde ki programı yazacağım. Bu arada ChangeDisplaySettings fonksiyonu sadece ekran çözünürlüğünü değil, görüntü ile ilgili başka bir çok ayarı daha yapıyor. O yüzden kafam karıştı zaten 🙂 .


Bir cevap yazın

E-posta hesabınız yayımlanmayacak.