From f251377d2c5c2fe1b6007edc2364e7c36b59b7be Mon Sep 17 00:00:00 2001 From: FileEX Date: Mon, 23 Dec 2024 23:57:03 +0100 Subject: [PATCH 1/2] Dark titlebar --- Client/core/DXHook/CProxyDirect3D9.cpp | 16 ++++++++++++++++ Client/core/premake5.lua | 2 +- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/Client/core/DXHook/CProxyDirect3D9.cpp b/Client/core/DXHook/CProxyDirect3D9.cpp index d563d95a5de..3596f88c4ff 100644 --- a/Client/core/DXHook/CProxyDirect3D9.cpp +++ b/Client/core/DXHook/CProxyDirect3D9.cpp @@ -10,6 +10,8 @@ *****************************************************************************/ #include "StdInc.h" +#include + HRESULT HandleCreateDeviceResult(HRESULT hResult, IDirect3D9* pDirect3D, UINT Adapter, D3DDEVTYPE DeviceType, HWND hFocusWindow, DWORD BehaviorFlags, D3DPRESENT_PARAMETERS* pPresentationParameters, IDirect3DDevice9** ppReturnedDeviceInterface); std::vector ms_CreatedDirect3D9List; @@ -166,6 +168,20 @@ HRESULT CProxyDirect3D9::CreateDevice(UINT Adapter, D3DDEVTYPE DeviceType, HWND SetWindowTextW(hFocusWindow, MbUTF8ToUTF16("MTA: San Andreas").c_str()); #endif + // Set dark titlebar if needed + HKEY hKey; + DWORD systemThemeMode = 1; + DWORD dataSize = sizeof(systemThemeMode); + + if (RegOpenKeyExW(HKEY_CURRENT_USER, L"Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize", 0, KEY_READ, &hKey) == ERROR_SUCCESS) + { + RegQueryValueExW(hKey, L"AppsUseLightTheme", nullptr, nullptr, reinterpret_cast(&systemThemeMode), &dataSize); + RegCloseKey(hKey); + } + + BOOL darkTitleBar = systemThemeMode == 0; + DwmSetWindowAttribute(hFocusWindow, DWMWA_USE_IMMERSIVE_DARK_MODE, &darkTitleBar, sizeof(darkTitleBar)); + // Detect if second call to CreateDevice if (CreateDeviceSecondCallCheck(hResult, m_pDevice, Adapter, DeviceType, hFocusWindow, BehaviorFlags, pPresentationParameters, ppReturnedDeviceInterface)) { diff --git a/Client/core/premake5.lua b/Client/core/premake5.lua index 0573dd6c050..49755743a24 100644 --- a/Client/core/premake5.lua +++ b/Client/core/premake5.lua @@ -46,7 +46,7 @@ project "Client Core" links { "ws2_32", "d3dx9", "Userenv", "DbgHelp", "xinput", "Imagehlp", "dxguid", "dinput8", - "strmiids", "odbc32", "odbccp32", "shlwapi", "winmm", "gdi32", "Imm32", "Psapi", + "strmiids", "odbc32", "odbccp32", "shlwapi", "winmm", "gdi32", "Imm32", "Psapi", "dwmapi", "pthread", "libpng", "jpeg", "zlib", "tinygettext", "discord-rpc", } From dfb2ce86c457deb09af4c89c1cab9aa00b6b8ca5 Mon Sep 17 00:00:00 2001 From: FileEX Date: Tue, 24 Dec 2024 18:22:56 +0100 Subject: [PATCH 2/2] Review --- Client/core/DXHook/CProxyDirect3D9.cpp | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/Client/core/DXHook/CProxyDirect3D9.cpp b/Client/core/DXHook/CProxyDirect3D9.cpp index 3596f88c4ff..40330e96961 100644 --- a/Client/core/DXHook/CProxyDirect3D9.cpp +++ b/Client/core/DXHook/CProxyDirect3D9.cpp @@ -169,17 +169,7 @@ HRESULT CProxyDirect3D9::CreateDevice(UINT Adapter, D3DDEVTYPE DeviceType, HWND #endif // Set dark titlebar if needed - HKEY hKey; - DWORD systemThemeMode = 1; - DWORD dataSize = sizeof(systemThemeMode); - - if (RegOpenKeyExW(HKEY_CURRENT_USER, L"Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize", 0, KEY_READ, &hKey) == ERROR_SUCCESS) - { - RegQueryValueExW(hKey, L"AppsUseLightTheme", nullptr, nullptr, reinterpret_cast(&systemThemeMode), &dataSize); - RegCloseKey(hKey); - } - - BOOL darkTitleBar = systemThemeMode == 0; + BOOL darkTitleBar = GetSystemRegistryValue((uint)HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize", "AppsUseLightTheme") == "\x0"; DwmSetWindowAttribute(hFocusWindow, DWMWA_USE_IMMERSIVE_DARK_MODE, &darkTitleBar, sizeof(darkTitleBar)); // Detect if second call to CreateDevice