Analysis When Microsoft came up with Windows 8 a couple of years ago, the message was clear: the future is tablet-shaped. The Windows desktop is still there, but not much changed from Windows 7 - some things went backwards, such as translucent “Aero” windows, available in 7 but gone in 8. Now the company is scrambling to fix its desktop development tools.
This lack of attention to the desktop was also reflected in Microsoft’s official software development frameworks. Visual Studio 2012 and 2013 included a ton of new stuff for Microsoft’s Windows Store apps, the tablet-oriented app framework new in Windows 8, and plenty more for Microsoft’s cloud and mobile efforts, but little for desktop developers.
In Windows 10 Microsoft is putting a renewed focus on the desktop, and enabling Store apps to run there. But what of those developing old-style desktop applications? They have a range of unappealing choices. Here is a quick summary:
Windows Forms: this came with the original .NET Framework back in 2002. It has moved on a bit since then, but not that much: Microsoft always had something new and better in mind, though what that “something” is has varied over the years. It is a .NET wrapper over the Win32 API that owes a lot to the original Visual Basic in its approach, and has the same weakness, encouraging developers to mix logic, design and presentation in the same files. It also has the same advantage, that anyone can knock together a working application in a few minutes, and is still popular in schools and business for this reason. Getting applications to scale nicely on a variety of displays is a challenge.
Windows Presentation Foundation (WPF): this was the Windows Forms replacement which came with Windows Vista in 2006. Unlike Windows Forms, WPF is built on DirectX for rich, fast graphics, and comes with an XML-based layout language (XAML) that scales applications nicely. It was advanced at the time, but Microsoft has been busy with other things and neglected to keep WPF up to date or to fix issues, though it improved when the Visual Studio 2010 IDE was built using the technology. Development is harder than with Windows Forms, thanks to the complexities of XAML and WPF data binding.
A Windows Presentation Foundation form in Blend for Visual Studio 2015
Visual C++: this is what Microsoft uses for its own desktop applications such as those in Office, though that team no doubt has its own frameworks and libraries. Microsoft Foundation Classes (MFC), long scorned as being a poor object oriented wrapper for the Windows API, still ships with Visual Studio, or you can use other frameworks such as the semi-official but unsupported Windows Template Library.
Third-party tools and frameworks: there is Embarcadero’s Delphi and C++ Builder, cross platform C++ frameworks like Qt, Java, or many other options. Some of these are excellent, but it is understandable if developers prefer Microsoft’s official and supported frameworks.