When you want to create a new app for Windows 10 or a new version, Windows 11, the first decision you make is what type of app to build. No matter what your app idea is there is a great selection of Windows app development tools to choose from. Microsoft has focused it’s more recent efforts on the C# programming language and its own proprietary technologies of WPF, UWP, WinForms, and .NET MAUI. You can use Microsoft’s tools to create Windows applications but there are a couple of other options which give more independent functionality and with the added bonus of huge productivity gains.
This article contains all the information you need to get started building apps in C++ for Microsoft Windows.
I’ve started using Dev-C++ and had a lot of fun figuring out all the things I can do with console applications. I really enjoying building C++ Win32 desktop applications, sometimes called classic desktop apps.
You can get the latest and updated version of Dev-C++ from the Embarcadero website. Embarcadero Dev-C++ is a new and improved fork of Bloodshed Dev-C++. This fork is sponsored by Embarcadero. Embarcadero Dev-C++ now has a modern UI and UX and some great new features too.
Table of Contents
Where can I find details on building Win32 desktop applications with The Dev-C++ IDE?
Here is a brief article on building Win32 desktop applications using the Embarcadero Dev-C++ IDE.
What are ‘Classic Desktop Windows Apps‘?
Win32 desktop apps are the original app type for native Windows applications that require direct access to Windows and hardware. Because of this, Win32 native applications have the highest performance for GUI apps and easy direct access to system hardware.
Using the Win32 API with C++ makes it possible to achieve the fastest app speeds and efficiency by taking more control of the target platform with ‘unmanaged’ code than is possible on a ‘managed’ runtime environment like .NET.
Here are a few highlights of what the Win32 API offers to enable you to build high-performance applications:
- DirectX, Direct3D and DirectCompute
- Access to performance-oriented instruction sets like SSE and AVX through intrinsic functions
- Hardware level optimizations
However, developing at such a level requires greater care and attention to get things right and it might take more development time.
What is a faster and easier way to create GUI applications?
While playing with C++ in the Dev-C++ IDE, I came across Embarcadero’s C++ Builder and then RAD Studio Delphi. Specifically, I started using Delphi with Visual Component Library which is often abbreviated to ‘the VCL’.
The VCL is a set of visual components (ready-made blocks of code and functionality) for the rapid development of Windows applications in the Delphi language. The VCL includes dozens of ready to use visual components and a wide variety of non-visual components and utility classes for tasks such as:
- Windows 10/11 application building
- Database applications
- Client/Server applications
- Console applications
- and more
With visual components such as the form, edit, button, panel components, designing and building graphical applications is much faster and more efficient than laboriously creating everything from scratch. In terms of UI libraries, the VCL has always been considered the best wrapper on the native Windows API. Moreover, Delphi and the VCL offer a much better encapsulation of the COM layer on Windows. Additionally, Delphi offers a great and smooth encapsulation of the WinRT APIs, directly mapped to interfaces and other core language features.
How to use the award-winning VCL framework in C++?
RAD Studio’s C++ Builder and Delphi come with the award-winning VCL framework for high-performance native Windows apps and the powerful FireMonkey (FMX) framework for cross-platform applications which can work on Windows, macOS, iOS, Android and Linux.
C++ Builder with VCL has never been easier and faster – best of all, your screen or view designs, and the code which creates and manipulates them. will always be in sync. Moreover, with RAD Studio’s and Dev-C++ IDE features, building applications is easy and straightforward.
- C++ Code Formatter: Automate the layout of your C++ code using clang-format
- Customize the IDE and Extend it as you want
- Get native, high-speed direct access to various database engines
- Utilize popular libraries such as Boost, Eigen, ZeroMQ and other broad range of community tools and libraries
- Integrate with version control system including Git, Subversion and Mercurial
- Fix bugs faster with integrated cross-platform native debugging
- Easily create deployable executables
- Connect to Amazon and Azure services, including app services, database, and storage services with Amazon & Azure API
What are the Microsoft Technologies for building Windows apps?
Microsoft gives several frameworks to build and design Windows desktop applications.
Windows Forms – is the original platform for managed Windows applications with a lightweight UI model and access to the .NET framework. The problem is WinForms does not utilize XAML for building apps and this requires you to rewrite your whole application if you decide to transform it into WinUI 3 (in preview)
Universal Windows Platform (UWP) can create not just Windows desktop applications, you can also build and run your apps across Xbox, HoloLens, and Surface Hub. UWP applications can be native or managed.
.NET MAUI is a multi-platform app UI framework for building cross-platform applications like what you can do with the Delphi/C++ Builder FireMonkey. .NET MAUI favors platform native experiences like in the FireMonkey framework.
Is .NET MAUI available now?
NET MAUI is still in preview mode. If you want to use .NET, C#, and XAML for building applications you can utilize .NET MAUI but remember that preview mode means things are subject to change, sometimes quite substantially.
Is there a stable technology for developing apps which work on multiple platforms with the same code?
FireMonkey, a cross-platform technology, which allows you to write applications which work on Windows, macOS, Linux, iOS and Android, is an extremely stable and mature choice.
For me, I consider the FireMonkey framework was built using a great architecture that is so obviously right it seem that every other framework is trying to adopt similar ideas. For instance, unlike FireMonkey’s “one project for multiple targets” elegant simplicity, Xamarin.Forms has one project for each target platform and another project for a shared codebase which creates lots of files and configurations. This is, to me, seems to add a level of complexity and error-prone clunkiness which you just don’t get with FireMonkey and RAD Studio.
Why does .NET MAUI exist?
NET MAUI is getting some attention because it tries to solve these initial Xamarin multiple project file problems. It also gives higher access to the platform-specific features than the previous, more restrictive Xamarin project architecture allowed.
But again, we have these things in the FireMonkey framework already and it has the added benefit of FireMonkey having been stable for over a decade. As far as I am concerned, If you want a reliable and powerful framework for building cross-platform desktop applications Delphi/C++ Builder with FireMonkey framework is the best choice for targeting Windows, macOS, Linux, iOS, and Android.