← Back to context

Comment by fassssst

4 years ago

There is no such thing as canonical “win32 widgets.” There have always been several different UI libraries even for win32. The original win32 styling you get with CreateWindow doesn’t support modern font rendering, high DPI, doesn’t work well with touch, is only software rendering, doesn’t support latest accessibility features, etc.

The newer stuff sits on top of DirectX.

The latest UI framework (XAML/WinUI) sits on top of a better rendering architecture (compositor) that itself wraps DirectX tech.

There's no reason why the old Win32 window and widget foundation couldn't have been lifted on top of a modern rendering architecture though, there was certainly enough time to achieve this. This would also reduce the need for creating entirely new UI frameworks every year (or even better, higher level UI frameworks could be built on top of a modernized but backward compatible Win32 widget foundation instead of doing all their own rendering directly on top of DirectX).

(TL;DR: the Windows UI mess looks to me like an organizational problem, not a technological problem. From the outside it looks like as the old guard is leaving, the new people coming in discard all the old code and instead prefer to start completely new projects, which of course is destined to fail, because the new people are repeating the same errors which had been identified and fixed decades ago).

  • If you listed out all the requirements a modern UI framework needs you would find that the original Win32 UI API’s are not viable. Especially if you want to support more than just C and C++.

    So much code is required to do things we now take for granted that the resulting patterns became new frameworks.

    • The Apple APIs date back to NeXTStep at the end of the 80s, yet they managed to mostly keep them fresh.

      Win32 is old and unviable because Microsoft hasn't bothered making comprehensive upgrades for it and never laid out a gap-free plan for how to move off it. They could have upgraded it more smoothly but never did.

      1 reply →

> The latest UI framework (XAML/WinUI) sits on top of a better rendering architecture (compositor) that itself wraps DirectX tech.

WinUI/UWP still uses CreateWindowEx and good old WndProc for event loop message handling at the top level on Windows 10.