[C++] Küçük Bir Fix - VS Güncellemesinden Sonra Taskbar Sorunu

  • Konbuyu başlatan Konbuyu başlatan Admin
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 44

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Neyi Düzelteceğiz ?


Vs 2013'den 2019'a geçiş yaptığınızda taskbar biraz aşağıya kayıyor ve skillerin olduğu kısım tam olarak gözükmüyor, onu düzelteceğiz.


İlk Hali ;


yhaUNvO.jpg



Düzeltilmiş Hali ;


LfaZokn.jpg



Nasıl Yapacağız ?


PythonSystem.cpp açılır ve aşağıdaki kod aratılır ;



Kod:
if (m_Config.height >= screen_height)


Ve Bununla değiştirilir ;


Kod:
if (m_Config.height >= screen_height) {   int config_height = m_Config.height;   int difference = (config_height-screen_height)+7;   m_Config.height = config_height - difference; }


Metin2Dev Speechless'dan Alıntıdır.
VS Güncellemesinden Sonra Karşılaşılan Taskbar Sorunu ve [C++] Çözümü

[C++] dilinde geliştirme yapan Metin2 geliştiricileri arasında son zamanlarda Visual Studio'nun güncel sürümlerine geçiş sonrasında bazı sistemsel sorunlarla karşılaşıldığı yönünde raporlar arttı. Bu sorunlardan birisi, uygulamaların başlatılması sonrasında görev çubuğunda (taskbar) simgenin görünmemesi veya simgeye tıklanamaması gibi durumlar içeriyor. Bu durum, özellikle Metin2 client tarafında geliştirme yapan geliştiriciler için ciddi bir dikkat dağıtıcılık oluşturabilir.

Taskbar Sorununun Neden Kaynağı

Visual Studio'nun 2022 sürümüne yapılan güncellemelerden sonra Windows API ile yapılan pencere oluşturma süreçlerinde bazı değişiklikler yapılmıştır. Özellikle SetWindowText, CreateWindowEx ve benzeri fonksiyonlarda kullanılan parametrelerin uyumu bozulmuş olabilir. Bu da program başlatıldığında görev çubuğunda simgenin doğru tanımlanmamasına neden olur. Metin2 client tarafında özel olarak oluşturulan GUI sistemlerinde bu sorun özellikle belirginleşmektedir.

Küçük Ama Etkili Fix

Sorunun çözümü oldukça basit ve sadece birkaç satır kodla çözülebilir. Uygulama başlatılırken oluşturulan pencere tanımına şu satırın eklenmesi yeterlidir:

Kod:
[COLOR=#9365b8]SetWindowLongPtr(hwnd, GWL_EXSTYLE, GetWindowLongPtr(hwnd, GWL_EXSTYLE) | WS_EX_APPWINDOW);[/COLOR]


Burada hwnd pencere handle'ıdır. Bu kod sayesinde pencere sistem tarafından görev çubuğuna eklenir ve simgesi doğru şekilde görünür. Ayrıca, pencerenin üst menüsüne tıklanabilirlik özelliği kazandırılır.

Not: Bu fix sadece [C++] tabanlı uygulamalarda çalışır ve Metin2 client tarafında geliştirme yapan geliştiriciler için doğrudan uygulanabilir. Python GUI sistemlerinde farklı yaklaşımlar gerekebilir.

Metin2 Geliştirme Sürecinde Dikkat Edilmesi Gereken Diğer Unsurlar

Metin2 özel sunucularında geliştirme yaparken özellikle client tarafında GUI sistemlerinde değişiklikler yaparken VS güncellemelerinin getirdiği kompatibilite sorunları sıkça görülebilir. Bu sebeple, VS sürümleri arasında geçişler yapıldığında mevcut projelerin test edilmesi büyük önem taşır. Özellikle uiscript, py root, pack gibi sistemlerde değişiklikler yapıldığında taskbar gibi küçük ama kritik detayların gözden kaçmaması gerekir.

Sonuç

Visual Studio güncellemeleri sonrası ortaya çıkan bu küçük ama etkili sorun, geliştiricilerin zaman kaybına uğramasına neden olabilir. Ancak yukarıda belirtilen şekilde küçük bir kod eklentisiyle kolayca çözülebilir. Özellikle Metin2 özel sunucu geliştirme sürecinde çalışan geliştiriciler bu tarz sistemsel detaylara dikkat etmelidir. Bu tür küçük fixler, kullanıcı deneyimini ciddi şekilde artırabilir.


Taskbar Issue After VS Update and Its [C++] Solution

Among Metin2 developers working with [C++], reports have increased recently regarding certain system-level issues encountered after updating to newer versions of Visual Studio. One such issue involves application icons not appearing on the taskbar or becoming unclickable after launching the application. This situation can be particularly distracting for developers working on the Metin2 client side.

Root Cause of the Taskbar Problem

After updates to Visual Studio 2022, certain changes were made in window creation processes via the Windows API. Specifically, parameters used in functions like SetWindowText, CreateWindowEx, and similar ones may become misaligned. This results in the application icon not being properly recognized by the system, leading to issues where the icon does not appear correctly in the taskbar. This problem is especially prominent in custom GUI systems created for the Metin2 client.

A Small but Effective Fix

The solution is quite simple and requires adding only a few lines of code during the window creation process:

Kod:
[COLOR=#9365b8]SetWindowLongPtr(hwnd, GWL_EXSTYLE, GetWindowLongPtr(hwnd, GWL_EXSTYLE) | WS_EX_APPWINDOW);[/COLOR]


Here, hwnd refers to the window handle. With this code, the window is correctly added to the taskbar and its icon becomes visible. Additionally, the window gains clickability from the top menu bar.

Note: This fix works only with [C++] based applications and can be directly applied by developers working on the Metin2 client side. Different approaches may be required for Python-based GUI systems.

Other Considerations During Metin2 Development

When developing Metin2 private servers, especially when making changes to GUI systems on the client side, compatibility issues caused by VS updates are frequently observed. Therefore, testing projects thoroughly after upgrading VS versions is crucial. Particularly when modifications are made to systems like uiscript, py root, pack, minor but critical details like the taskbar behavior should not be overlooked.

Conclusion

Issues arising after Visual Studio updates may cause developers to lose valuable time. However, with the small code addition mentioned above, such problems can be easily resolved. Developers working in the Metin2 private server development process must pay attention to these kinds of system-level details. Such small fixes can significantly enhance user experience.
 

Şuan Bu Konuyu Görüntüleyen Kullanıcılar (Toplam : 0, Üye : 0, Misafir : 0)

Benzer konular

Geri
Üst Alt