WinUpgrade.md
Date: March 2026
Branch: master_Win10
Minimum OS: Windows 10 version 1809 (build 17763)
Notepad3's minimum supported Windows version has been raised from Windows 7 to Windows 10. This change enables the use of modern Win32 APIs, removes legacy compatibility code, and simplifies the codebase.
_WIN32_WINNT, WINVER, NTDDI_VERSION defines to _WIN32_WINNT_WIN10 / NTDDI_WIN10_RS5 across all .vcxproj files and source headers#include <sdkddkver.h> for symbolic version constantsIsWindowsVistaOrGreater() and IsWindows7SP1OrGreater() dead code paths in Notepad3.cGetWinVersionString() by removing Win7/Win8/Win8.1 branchesIsWindowsVistaOrGreater() guard from IsProcessElevated() in Helpers.csupportedOS GUIDs in Notepad3.exe.manifest and MiniPath.exe.manifest#if _WIN32_WINNT < _WIN32_WINNT_WIN8 conditional in DarkMode.cppresource.h filesVersion.ps1supportedOS GUIDs from grepWinNP3/src/compatibility.manifestIsWindowsXPSP3OrGreater() checks from toolbar logic in Notepad3.c#if (NTDDI_VERSION < NTDDI_WIN8) fallback code in URL escape/unescape functions (Helpers.c)GetTickCount() to GetTickCount64() across Notepad3.c and Helpers.c (avoids 49.7-day DWORD rollover)_GetTrueWindowsVersion() function (used deprecated GetVersionEx), removed commented-out ChangeWindowMessageFilter and SetProcessDpiAwarenessContext callsBuild.ps1 vswhere version range from [17.0,18.0) to [17.0,19.0) for VS2026 support$Major changed from 6 to 7 in build.ymlThese items are optional modernizations noted for future consideration:
RtlAreLongPathsEnabled in PathLib.c — currently dynamically loaded; could link ntdll.lib directly on Win10+PathCch* APIs — commented-out #include <pathcch.h> could be enabled to replace custom path functionsGetSystemMetrics() → GetSystemMetricsForDpi() — several call sites could benefit from DPI-aware metricstest/test_files/StyleLexers/styleLexCPP/Config.cpp still has old Win7 defines (syntax highlighting test data — not compiled)