- Mesaj
- 1.500
- Çözümler
- 55
- Beğeni
- 2.556
- Puan
- 1.839
- Ticaret Puanı
- 0
Metin2 client’ında uzun zamandır olan küçük bir problem vardı:
oyun penceresi yatayda birkaç piksel sağa kayık şekilde açılıyordu.
Benim sistemimde bu fark yaklaşık 7 piksel civarındaydı.
Çok büyük bir şey değil ama “tam ortada değil” hissi net olarak vardı.
Before: pencere yatayda hafif sağa kayık
After: pencere taskbar pozisyonu farketmeksizin tam olarak ortalanmış
Sorun Ne?
Sorun basit bir matematik hatası değil.Win10/11’de:
- GetWindowRect() pencerenin gerçek görsel sınırlarını birebir yansıtmıyor
- DWM (Desktop Window Manager) nedeniyle pencerenin sol–sağ çerçeveleri simetrik değil
C++:
(screenWidth - windowWidth) / 2
Ne Değişti?
Bu çalışmayla birlikte birkaç küçük ama önemli temizlik de yapıldı:- Client penceresinin yatayda ~7 piksel sağa kayık açılmasına sebep olan merkezleme mantığı düzeltildi
- Pencere artık kullanıcının gerçekten gördüğü frame’e göre ortalanıyor (Win10/11 DWM uyumlu)
- GetWindowRect için yazılmış, WinAPI ismiyle çakışan gereksiz wrapper fonksiyon kaldırıldı
- FindWindow ile pencere başlığına bakarak yapılan “another window” reposition logic’i tamamen kaldırıldı
- Bu kod modern Windows’ta deterministik çalışmıyordu
- Ayrıca merkezleme mantığını bozuyordu
- Sabit offset, magic number veya “şuraya biraz kaydır” tarzı hack’ler kullanılmadı
- Pencere artık her zaman work area içinde, taskbar’a taşmadan ve kayık olmadan açılıyor
Nasıl Yapılır
Burayı görüntülemek için üye girişi yapmalı veya kayıt olmalısınız.