The official way to create user interfaces for the Windows operating system changed quite a lot of times during the last years. Microsoft created and (partially or fully) abadoned a lot of APIs which where intended to replace the respective previous ones. They changed names and ways how it's supposed to be done a few times, and left a lof of developers confused. Here is a small historical overview:
Win32 - 1985
Win32 is the
Windows built-in API. Using it you can create buttons, windows, scrollbars, access the windows shell, common dialogs and so on, and they will look and behave like native windows.
It is pretty old, can be accessed via the C programming language but works nicely still today.
MFC - 1992
A C++ wrapper named
MFC for Win32 which makes the API a bit easer to use - the MFC still gets minor updates today from Microsoft and is interestingly still used widely.
WinForms - 2002
Windows Forms was a .NET wrapper over Win32, for use in C# and other .NET languages. It's in maintenance mode and no new features are planned of being added (
source).
WPF - 2006
Windows Presentation Foundation introduced XAML and used DirectX to draw vector based components and to be used by .NET languages like C#. It's now
open source.
Silverlight - 2007
Used parts of WPF for doing UI on the Web as competition to Adobe Flash. It's discontinued (
source).
Xamarin (Forms) - 2014
Xamarin was a cross platform .NET, including the UI framework Xamarin.Forms (similar to WinForms). It ran on Mono instead of .NET, then later on real .NET. Replaced with MAUI, see below.
WinJS - 2012
WinJS was a JavaScript for creating Windows Store apps via HTML5 and JavaScript. It seems not to be developed any further.
WinRT (XAML) - 2012
WinRT is a platform for creating Windows apps for example via a custom C++ dialect (C++/WinRT, C++/CX) which used XAML to create the UserInterface. It was replaced with UWP later.
UWP (XAML) - 2015
Starting with Windows 10 - UWP is the platform for creating "universal apps" based on real C++ but also usable from .NET. This was replaced with WinUI later.
WinUI - 2018
Similar to UWP above but with styles making it look more like Windows 11. Now replaced with WinUI 3.
MAUI - 2020
Framework for creating multi-platform UIs, the successor of Xamarin.Forms (see above). Of course also now based on XAML, only for .NET languages.
WinUI 3 - 2021
Similar to WinUI, but decoupled the UI framework from the OS and put it into the library. Your apps now also work on systems which don't have the latest OS update.
Now that I wrote down all of these especially in chronological order, I think it's a bit less confusing.
Please let me know if I forgot something. Of course there are lots of nice third party APIs and SDKs, and I recommend to use these, but that's for another blog post.