Scarlet 1
Scarlet
Best Studio 1
Best Studio
mannaxxx 1
mannaxxx
Agora Metin2 1
Agora Metin2
[DEV]AB 1
[DEV]AB
Sevdamsın 1
Sevdamsın
TuZaKK 1
TuZaKK
kaptanmikro1 1
kaptanmikro1
farkmt2official 2
farkmt2official
kralhakan2009 1
kralhakan2009
Vahsi Uzman 1
Vahsi Uzman
Hikaye Ekle

[How-To] Client Penceresi için Karanlık Mod

  • Konuyu başlatan Konuyu başlatan Silverhand
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 2
  • Görüntüleme Görüntüleme 226

Türkiye'de ilk Mobil & PC Aynı Anda Metin2 Oyna. Triarchonline kalıcı ve uzun ömürlü yapısı ile 24 Temmuz'da açılıyor. | 1-99 Mobil Metin2 Triarch HEMEN TIKLA!

Alıntıdır.
Görsel başlık her şeyi anlatıyor zaten.

Nedir? :

client-source\EterLib\MSWindow.cpp dosyasında

Kod:
#include <windowsx.h>

Altına Ekle

Kod:
#ifdef ENABLE_WIN_DARKMODE
#include <dwmapi.h>
#pragma comment(lib, "dwmapi.lib")

#ifndef DWMWA_USE_IMMERSIVE_DARK_MODE
#define DWMWA_USE_IMMERSIVE_DARK_MODE 20
#endif

#ifndef DWMWA_USE_IMMERSIVE_DARK_MODE_OLD
#define DWMWA_USE_IMMERSIVE_DARK_MODE_OLD 19
#endif

static bool IsWindowsDarkModeEnabled()
{
    DWORD value = 1;
    DWORD size = sizeof(value);

    LONG result = RegGetValueA(
        HKEY_CURRENT_USER,
        "Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize",
        "AppsUseLightTheme",
        RRF_RT_REG_DWORD,
        NULL,
        &value,
        &size
    );

    if (result != ERROR_SUCCESS)
        return false;

    return value == 0;
}

static void ApplyWindowTitleBarTheme(HWND hWnd)
{
    if (!hWnd)
        return;

    BOOL dark = IsWindowsDarkModeEnabled() ? TRUE : FALSE;

    HRESULT hr = DwmSetWindowAttribute(
        hWnd,
        DWMWA_USE_IMMERSIVE_DARK_MODE,
        &dark,
        sizeof(dark)
    );

    if (FAILED(hr))
    {
        DwmSetWindowAttribute(
            hWnd,
            DWMWA_USE_IMMERSIVE_DARK_MODE_OLD,
            &dark,
            sizeof(dark)
        );
    }
}
#endif

Daha sonra şu fonksiyonu bul :

Kod:
LRESULT CMSWindow::WindowProcedure(HWND hWnd, UINT uiMsg, WPARAM wParam, LPARAM lParam)

Şununla değiştir :

Kod:
LRESULT CMSWindow::WindowProcedure(HWND hWnd, UINT uiMsg, WPARAM wParam, LPARAM lParam)
{
#ifdef ENABLE_WIN_DARKMODE
    switch (uiMsg)
    {
    case WM_CREATE:
        ApplyWindowTitleBarTheme(hWnd);
        break;

    case WM_SIZE:
        OnSize(wParam, lParam);
        ApplyWindowTitleBarTheme(hWnd);
        break;

    case WM_SETTINGCHANGE:
        if (lParam && !lstrcmpiA((LPCSTR)lParam, "ImmersiveColorSet"))
            ApplyWindowTitleBarTheme(hWnd);
        break;

    case WM_ACTIVATEAPP:
        m_isActive = (wParam == WA_ACTIVE) || (wParam == WA_CLICKACTIVE);
        break;
    }

    return DefWindowProc(hWnd, uiMsg, wParam, lParam);
#else
    switch (uiMsg)
    {
    case WM_SIZE:
        OnSize(wParam, lParam);
        break;

    case WM_ACTIVATEAPP:
        m_isActive = (wParam == WA_ACTIVE) || (wParam == WA_CLICKACTIVE);
        break;
    }

    return DefWindowProc(hWnd, uiMsg, wParam, lParam);
#endif
}

Ayrıca bunun içine gel :

Kod:
bool CMSWindow::Create

Kod:
Şu satırlardan sonra:

if (!m_hWnd)
    return false;

şunu ekleyin:

#ifdef ENABLE_WIN_DARKMODE
    ApplyWindowTitleBarTheme(m_hWnd);
#endif

Ve tabii ki defines.h dosyasına #define ENABLE_WI#defineODE eklemeyi unutmayın.
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst