todo/W10-todo.md
Goal: Raise the minimum supported OS from Windows 7 (
0x0601) to Windows 10 (0x0A00). Verified: VS2026 (v145) and VS2022 (v143) both build clean before changes.Strategy: Implement each section → build with VS2026 → commit & push → move on.
All preprocessor definitions in every <PreprocessorDefinitions> block must change:
| Old | New |
|---|---|
_WIN32_WINNT=0x601 | _WIN32_WINNT=0x0A00 |
WINVER=0x601 | WINVER=0x0A00 |
NTDDI_VERSION=0x06010000 | NTDDI_VERSION=0x0A000000 |
src/Notepad3.vcxproj – 9 config blocks (PR #5565)scintilla/Scintilla.vcxproj – 12 config blocks (PR #5565)scintilla/ScintillaDLL.vcxproj – 4 config blocks (PR #5565)lexilla/Lexilla.vcxproj – 9 config blocks (PR #5565)other_sln/Notepad3DLL.vcxproj – 4 config blocks (PR #5565)🔨 GATE:
Build with VS2026 → commit → push✅ Done via PR #5565
PR #5565 updated all headers using _WIN32_WINNT_WIN10 / NTDDI_WIN10_RS5 symbolic constants + #include <sdkddkver.h>.
src/TypeDefs.h – updated defines (PR #5565)src/TypeDefs.h – #if 0 block handled (PR #5565)src/resource.h – updated defines (PR #5565)src/EncodingDetection.cpp (PR #5565)src/Print.cpp (PR #5565)src/PathLib.c (PR #5565)src/Config/Config.cpp (PR #5565)src/crypto/crypto.c (PR #5565)src/crypto/rijndael-api-fst.c (PR #5565)src/ChooseFont/ChooseFont.h (PR #5565)src/_backlog/AccelKeys.c (PR #5565)test/test_files/StyleLexers/styleLexCPP/Config.cpp – syntax highlighting test data, not compiled code (left as-is intentionally)🔨 GATE:
Build with VS2026 → commit → push✅ Done via PR #5565
res/Notepad3.exe.manifest – cleaned (PR #5565)minipath/res/MiniPath.exe.manifest – cleaned (PR #5565)grepWinNP3/src/compatibility.manifest – cleaned (commit 88827d8db)🔨 GATE:
Build with VS2026 → commit → push✅88827d8db
src/Notepad3.cIsWindowsXPSP3OrGreater() ? 1 : 2 → simplified to 1 (commit 88827d8db)IsWindows7SP1OrGreater() guard → updated (PR #5565)if (!IsWindowsVistaOrGreater()) block removed (PR #5565)!IsWindowsXPSP3OrGreater() && removed from condition (commit 88827d8db)if (bProcessed && !IsWindowsXPSP3OrGreater()) block removed (commit 88827d8db)!IsWindowsVistaOrGreater() || removed (PR #5565)src/Helpers.cIsProcessElevated(): IsWindowsVistaOrGreater() check removed (PR #5565)GetWinVersionString(): Win7/Win8/Win8.1 branches removed (PR #5565)🔨 GATE:
Build with VS2026 → commit → push✅88827d8db
src/Helpers.c – URL Escape Functions#if (NTDDI_VERSION < NTDDI_WIN8) legacy URL char tables (commit 88827d8db)UrlEscapeEx(): Removed #else branch, kept Win8+ path (commit 88827d8db)UrlUnescapeEx(): Removed #else branch, kept Win8+ path (commit 88827d8db)src/DarkMode/DarkMode.cpp#if _WIN32_WINNT < _WIN32_WINNT_WIN8 block removed (PR #5565)GetProcAddress for SetDefaultDllDirectories removed (PR #5565)🔨 GATE:
Build with VS2026 → commit → push✅88827d8db
GetTickCount() → GetTickCount64() (avoids 49.7-day rollover)src/Notepad3.c line 179 – s_dwAutoScrollStartTick type: DWORD → ULONGLONG (commit 4d9a45805)src/Notepad3.c line 2482 – GetTickCount() → GetTickCount64() (commit 4d9a45805)src/Notepad3.c line 2491 – GetTickCount() → GetTickCount64() (commit 4d9a45805)src/Helpers.c line 615 – GetTickCount() → GetTickCount64() (commit 4d9a45805)src/Helpers.c line 617 – GetTickCount() → GetTickCount64() with (DWORD) cast (commit 4d9a45805)RtlAreLongPathsEnabled – evaluate direct ntdll linkage vs dynamic loadingPathCch* APIs – evaluate uncommenting #include <pathcch.h>GetSystemMetrics() → GetSystemMetricsForDpi() – evaluate DPI-aware variants🔨 GATE:
Build with VS2026 → commit → push✅4d9a45805
src/Helpers.c lines 184–222 – _GetTrueWindowsVersion() #if 0 block removed (commit c9c3dbf5e)src/Notepad3.c lines 1251–1253 – Commented-out ChangeWindowMessageFilter calls removed (commit c9c3dbf5e)src/Notepad3.c lines 1016–1017 – SetProcessDpiAwarenessContext comment replaced with manifest note (commit c9c3dbf5e)src/Notepad3.c line 1091 – SetThreadDpiAwarenessContext commented code removed (commit c9c3dbf5e)src/PathLib.c line 67 – Already handled by PR #5565🔨 GATE:
Build with VS2026 → commit → push✅c9c3dbf5e
Build/scripts/Build.ps1 line 26 – vswhere range [17.0,18.0) → [17.0,19.0) (commit c9c3dbf5e).github/workflows/build.yml line 43 – $Major = 6 → $Major = 7 (commit bdbc15faa)🔨 GATE:
Build with VS2026 → commit → push✅c9c3dbf5e
0x0601 or 0x06010000 – clean (no matches in source)_WIN32_WINNT_WIN7 or NTDDI_WIN7 – clean (only in SDK header dlgs.h)IsWindowsVistaOrGreater|IsWindows7|IsWindowsXPSP3 – clean (no matches)WinUpgrade.md in repo root (commit f2bc77890)