Writing GUI apps for Windows is painful

Overall sentiment

  • Many agree that writing GUI apps is painful, especially on Windows, but differ on whether this is worse than other platforms.
  • Some argue Windows desktop dev is actually “better than ever” if you choose the right tools; others say the platform is a mess of abandoned toolkits and half-finished ideas.

Legacy vs. modern Windows GUIs

  • Old tools (VB6, WinForms, MFC, Delphi) are remembered as fast to use and producing consistent UIs, albeit limited.
  • Modern stacks (WPF, UWP, WinUI 2/3, MAUI, React Native for Windows) are seen as fragmented, unstable, and frequently reset by Microsoft.
  • Several people still recommend WinForms or WPF on .NET Framework 4.8 for practicality, noting it’s preinstalled on recent Windows.

Microsoft stack fragmentation

  • Strong criticism that Microsoft repeatedly replaces UI frameworks (WPF → UWP → WinUI → MAUI/Blazor/WinAppSDK), often without clear migration paths.
  • Disagreement whether WinUI 3 is “abandoned” or “the winner going forward”; even supporters admit tooling (designer, hot reload) is buggy.

Binary size & “single-EXE” constraint

  • Many consider the author’s constraints (single EXE, <40 MB, custom styling, native code, no LGPL, no installer) unrealistic or self-imposed.
  • Others defend size and portability constraints as valid for embedded devices, strict customers, or non-technical users.
  • Discussion on LGPL: static vs dynamic linking, shipping .o files to comply, and how this clashes with “single EXE” goals.

Native vs custom styling

  • Large camp: native Win32/OS controls should be used and not restyled; custom themes are seen as hostile, break accessibility and familiarity.
  • Counterpoint: branding and dense/specialized UIs (DAWs, graphics tools, games) often need custom widgets and theming.
  • Dark mode for classic Win32 is described as partial and hacky, pushing people to owner-draw controls.

Toolkit options mentioned

  • Qt widely praised as “only sane option” for serious C++ GUI, but licensing cost and size clash with the article’s constraints.
  • Alternatives cited: FLTK, wxWidgets, Lazarus/Delphi, JUCE, Dear ImGui/nuklear/egui, Slint, Avalonia, Uno, Tauri, Electron, Flutter, Tkinter, WebView2, C++Builder.
  • Dear ImGui is valued for development speed and small binaries, but criticized as unsuitable for end-user apps (accessibility, conventions, keyboard/IME, non-native look).

Cross‑platform vs Windows-only

  • Several argue the real hard problem is cross‑platform GUI, not Windows alone.
  • Electron’s popularity is seen as a rational response to native-UI chaos, despite size/performance concerns.