Hacker News new | ask | show | jobs
by fassssst 1539 days ago
What does “native” mean to you? WinUI is implemented in C++, contains the control set of the current design language, and is used by the Windows shell itself and even Notepad.

Yea it looks different than what you can get from CreateWindowEx with the various control styles, but those also look different than MFC, Windows Forms, etc.

2 comments

I would call it almost, but not quite native. There are some things MS internal apps can do, but that WinUI 3 can't. (Until recently, creating additional Windows, but also things like blurred transparency.)

I think a real native solution would be shipped with the system, and get an updated theme and feel with an OS update. But the last version that did this was Win32/Uxtheme and to some extent WPF. Metro/UWP formally did this, but it encourages you to hardcode a lot of styles, so you have to update your app when a new Windows version comes out. But I think MS has moved away from shipping the UI library with the system.

The real native UI is what MS uses internally, and for a lot of products that is DirectUI. It is used in Explorer, the start menu used it for some time in Win10, I think the control center also used it. But also MSN messenger used it, and Office, too. Spiritually it is similar to WinUI 3 I think: implemented in native code, drawing "windowless", and using some kind of XAML.

DirectUI was a precursor to XAML and is being rapidly replaced by WinUI internally. It has janky markup and renders using non-GPU accelerated GDI.

WinUI 3 intentionally decoupled from the OS so app developers can support several versions of Windows while still using the latest GUI stuff, in the spirit of web apps.

Win32 is what I would call native, and MFC/WinForms are wrappers around that.

So in technical sense, WinUI is as native as Qt/wxWidgets.

Just my preference on terminology, rather than anything against WinUI (I've been developing a WinUI app).

None of that Win32 UI stuff is being updated anymore so it’s more “classic” than “native.”
One could say both are native Windows UI toolkits. Kind of similar to when Apple shipped Carbon and Cocoa.