#include "IatHook.hpp"#include <Windows.h>#include <Uxtheme.h>#include <Vssym32.h>#include <unordered_set>#include <mutex>#include <cwchar>Go to the source code of this file.
Classes | |
| struct | WINDOWCOMPOSITIONATTRIBDATA |
Typedefs | |
| using | fnRtlGetNtVersionNumbers = void (WINAPI *)(LPDWORD major, LPDWORD minor, LPDWORD build) |
| using | fnSetWindowCompositionAttribute = BOOL (WINAPI *)(HWND hWnd, WINDOWCOMPOSITIONATTRIBDATA*) |
| using | fnGetDpiForWindow = UINT (WINAPI*)(_In_ HWND hwnd) |
| using | fnGetDpiForSystem = UINT(WINAPI*)() |
| using | fnShouldAppsUseDarkMode = bool (WINAPI *)() |
| using | fnAllowDarkModeForWindow = bool (WINAPI *)(HWND hWnd, bool allow) |
| using | fnAllowDarkModeForApp = bool (WINAPI *)(bool allow) |
| using | fnFlushMenuThemes = void (WINAPI *)() |
| using | fnRefreshImmersiveColorPolicyState = void (WINAPI *)() |
| using | fnIsDarkModeAllowedForWindow = bool (WINAPI *)(HWND hWnd) |
| using | fnGetIsImmersiveColorUsingHighContrast = bool (WINAPI *)(IMMERSIVE_HC_CACHE_MODE mode) |
| using | fnOpenNcThemeData = HTHEME(WINAPI *)(HWND hWnd, LPCWSTR pszClassList) |
| using | fnShouldSystemUseDarkMode = bool (WINAPI *)() |
| using | fnSetPreferredAppMode = PreferredAppMode (WINAPI *)(PreferredAppMode appMode) |
| using | fnIsDarkModeAllowedForApp = bool (WINAPI *)() |
Enumerations | |
| enum | IMMERSIVE_HC_CACHE_MODE { IHCM_USE_CACHED_VALUE , IHCM_REFRESH } |
| enum | PreferredAppMode { Default , AllowDark , ForceDark , ForceLight , Max } |
| enum | WINDOWCOMPOSITIONATTRIB { WCA_UNDEFINED = 0 , WCA_NCRENDERING_ENABLED = 1 , WCA_NCRENDERING_POLICY = 2 , WCA_TRANSITIONS_FORCEDISABLED = 3 , WCA_ALLOW_NCPAINT = 4 , WCA_CAPTION_BUTTON_BOUNDS = 5 , WCA_NONCLIENT_RTL_LAYOUT = 6 , WCA_FORCE_ICONIC_REPRESENTATION = 7 , WCA_EXTENDED_FRAME_BOUNDS = 8 , WCA_HAS_ICONIC_BITMAP = 9 , WCA_THEME_ATTRIBUTES = 10 , WCA_NCRENDERING_EXILED = 11 , WCA_NCADORNMENTINFO = 12 , WCA_EXCLUDED_FROM_LIVEPREVIEW = 13 , WCA_VIDEO_OVERLAY_ACTIVE = 14 , WCA_FORCE_ACTIVEWINDOW_APPEARANCE = 15 , WCA_DISALLOW_PEEK = 16 , WCA_CLOAK = 17 , WCA_CLOAKED = 18 , WCA_ACCENT_POLICY = 19 , WCA_FREEZE_REPRESENTATION = 20 , WCA_EVER_UNCLOAKED = 21 , WCA_VISUAL_OWNER = 22 , WCA_HOLOGRAPHIC = 23 , WCA_EXCLUDED_FROM_DDA = 24 , WCA_PASSIVEUPDATEMODE = 25 , WCA_USEDARKMODECOLORS = 26 , WCA_LAST = 27 } |
Functions | |
| bool | AllowDarkModeForWindow (HWND hWnd, bool allow) |
| bool | IsHighContrast () |
| void | RefreshTitleBarThemeColor (HWND hWnd) |
| bool | IsColorSchemeChangeMessage (LPARAM lParam) |
| bool | IsColorSchemeChangeMessage (UINT message, LPARAM lParam) |
| void | AllowDarkModeForApp (bool allow) |
| void | EnableDarkScrollBarForWindowAndChildren (HWND hwnd) |
| bool | IsWindowOrParentUsingDarkScrollBar (HWND hwnd) |
| void | FixDarkScrollBar () |
| constexpr bool | CheckBuildNumber (DWORD buildNumber) |
| void | InitDarkMode () |
| struct WINDOWCOMPOSITIONATTRIBDATA |
| Class Members | ||
|---|---|---|
| WINDOWCOMPOSITIONATTRIB | Attrib | |
| SIZE_T | cbData | |
| PVOID | pvData | |
| using fnAllowDarkModeForApp = bool (WINAPI *)(bool allow) |
| using fnAllowDarkModeForWindow = bool (WINAPI *)(HWND hWnd, bool allow) |
| using fnFlushMenuThemes = void (WINAPI *)() |
| using fnGetDpiForSystem = UINT(WINAPI*)() |
| using fnGetDpiForWindow = UINT (WINAPI*)(_In_ HWND hwnd) |
| using fnGetIsImmersiveColorUsingHighContrast = bool (WINAPI *)(IMMERSIVE_HC_CACHE_MODE mode) |
| using fnIsDarkModeAllowedForApp = bool (WINAPI *)() |
| using fnIsDarkModeAllowedForWindow = bool (WINAPI *)(HWND hWnd) |
| using fnOpenNcThemeData = HTHEME(WINAPI *)(HWND hWnd, LPCWSTR pszClassList) |
| using fnRefreshImmersiveColorPolicyState = void (WINAPI *)() |
| using fnRtlGetNtVersionNumbers = void (WINAPI *)(LPDWORD major, LPDWORD minor, LPDWORD build) |
| using fnSetPreferredAppMode = PreferredAppMode (WINAPI *)(PreferredAppMode appMode) |
| using fnSetWindowCompositionAttribute = BOOL (WINAPI *)(HWND hWnd, WINDOWCOMPOSITIONATTRIBDATA*) |
| using fnShouldAppsUseDarkMode = bool (WINAPI *)() |
| using fnShouldSystemUseDarkMode = bool (WINAPI *)() |
| Enumerator | |
|---|---|
| IHCM_USE_CACHED_VALUE | |
| IHCM_REFRESH | |
| enum PreferredAppMode |
| Enumerator | |
|---|---|
| Default | |
| AllowDark | |
| ForceDark | |
| ForceLight | |
| Max | |
| void AllowDarkModeForApp | ( | bool | allow | ) |
References _AllowDarkModeForApp, _SetPreferredAppMode, ForceDark, and ForceLight.
| bool AllowDarkModeForWindow | ( | HWND | hWnd, |
| bool | allow ) |
References _AllowDarkModeForWindow, and g_darkModeSupported.
|
constexpr |
Referenced by InitDarkMode().
| void EnableDarkScrollBarForWindowAndChildren | ( | HWND | hwnd | ) |
References g_darkScrollBarMutex, and g_darkScrollBarWindows.
| void FixDarkScrollBar | ( | ) |
References _OpenNcThemeData, FindDelayLoadThunkInModule(), and L.
Referenced by NppDarkMode::SetDarkMode().
| void InitDarkMode | ( | ) |
References _AllowDarkModeForApp, _AllowDarkModeForWindow, _FlushMenuThemes, _GetDpiForSystem, _GetDpiForWindow, _GetIsImmersiveColorUsingHighContrast, _IsDarkModeAllowedForWindow, _OpenNcThemeData, _RefreshImmersiveColorPolicyState, _SetPreferredAppMode, _SetWindowCompositionAttribute, _ShouldAppsUseDarkMode, CheckBuildNumber(), g_buildNumber, g_darkModeSupported, and L.
Referenced by NppDarkMode::InitDarkMode().
| bool IsColorSchemeChangeMessage | ( | LPARAM | lParam | ) |
References _GetIsImmersiveColorUsingHighContrast, _RefreshImmersiveColorPolicyState, IHCM_REFRESH, and L.
Referenced by IsColorSchemeChangeMessage(), and NppDarkMode::OnSettingChange().
| bool IsColorSchemeChangeMessage | ( | UINT | message, |
| LPARAM | lParam ) |
References IsColorSchemeChangeMessage().
| bool IsHighContrast | ( | ) |
Referenced by NppDarkMode::OnSettingChange(), and RefreshTitleBarThemeColor().
| bool IsWindowOrParentUsingDarkScrollBar | ( | HWND | hwnd | ) |
References g_darkScrollBarMutex, and g_darkScrollBarWindows.
| void RefreshTitleBarThemeColor | ( | HWND | hWnd | ) |
References _IsDarkModeAllowedForWindow, _SetWindowCompositionAttribute, _ShouldAppsUseDarkMode, g_buildNumber, IsHighContrast(), L, and WCA_USEDARKMODECOLORS.
| fnAllowDarkModeForApp _AllowDarkModeForApp = nullptr |
Referenced by AllowDarkModeForApp(), and InitDarkMode().
| fnAllowDarkModeForWindow _AllowDarkModeForWindow = nullptr |
| fnFlushMenuThemes _FlushMenuThemes = nullptr |
Referenced by InitDarkMode(), and NppDarkMode::SetDarkMode().
| fnGetDpiForSystem _GetDpiForSystem = nullptr |
Referenced by InitDarkMode(), and NppDarkMode::scaled().
| fnGetDpiForWindow _GetDpiForWindow = nullptr |
Referenced by InitDarkMode(), and NppDarkMode::scaled().
| fnGetIsImmersiveColorUsingHighContrast _GetIsImmersiveColorUsingHighContrast = nullptr |
Referenced by InitDarkMode(), and IsColorSchemeChangeMessage().
| fnIsDarkModeAllowedForWindow _IsDarkModeAllowedForWindow = nullptr |
Referenced by InitDarkMode(), and RefreshTitleBarThemeColor().
| fnOpenNcThemeData _OpenNcThemeData = nullptr |
Referenced by FixDarkScrollBar(), and InitDarkMode().
| fnRefreshImmersiveColorPolicyState _RefreshImmersiveColorPolicyState = nullptr |
Referenced by InitDarkMode(), and IsColorSchemeChangeMessage().
| fnSetPreferredAppMode _SetPreferredAppMode = nullptr |
Referenced by AllowDarkModeForApp(), and InitDarkMode().
| fnSetWindowCompositionAttribute _SetWindowCompositionAttribute = nullptr |
Referenced by InitDarkMode(), and RefreshTitleBarThemeColor().
| fnShouldAppsUseDarkMode _ShouldAppsUseDarkMode = nullptr |
Referenced by InitDarkMode(), NppDarkMode::OnSettingChange(), and RefreshTitleBarThemeColor().
| fnShouldSystemUseDarkMode _ShouldSystemUseDarkMode = nullptr |
| DWORD g_buildNumber = 0 |
Referenced by InitDarkMode(), and RefreshTitleBarThemeColor().
| bool g_darkModeEnabled = false |
Referenced by NppDarkMode::IsEnabled(), NppDarkMode::OnSettingChange(), and NppDarkMode::SetDarkMode().
| bool g_darkModeSupported = false |
Referenced by AllowDarkModeForWindow(), InitDarkMode(), and NppDarkMode::IsSupported().
| std::mutex g_darkScrollBarMutex |
Referenced by EnableDarkScrollBarForWindowAndChildren(), and IsWindowOrParentUsingDarkScrollBar().
| std::unordered_set<HWND> g_darkScrollBarWindows |
Referenced by EnableDarkScrollBarForWindowAndChildren(), and IsWindowOrParentUsingDarkScrollBar().
| bool g_SystemMenuEnabled = true |