Une application de bureau en C++ est une application native qui peut accéder à l’ensemble complet d’API Windows, et qui s’exécute dans une fenêtre ou dans la console système. Les applications de bureau en C++ peuvent s’exécuter sur des versions allant de Windows XP à Windows 11 (même si Windows XP n’est plus officiellement pris en charge et qu’il existe de nombreuses nouvelles API Windows depuis).
Tout application de bureau en C++ peut utiliser des classes et fonctions CRT (Runtime C) et de Bibliothèque standard, des objets COM, ainsi que les fonctions Windows publiques, collectivement connues sous le nom d’API Windows. Pour obtenir une présentation des applications de bureau Windows en C++, consultez Bien démarrer avec Win32 et C++.
Il existe plusieurs grandes catégories d’applications Windows que vous pouvez créer avec C++, décrites ci-dessous. Chacune a son propre modèle de programmation et ensemble de bibliothèques spécifique à Windows. La bibliothèque standard C++ et les bibliothèques C++ tierces peuvent être utilisées dans n’importe laquelle d’entre elles.
Pour accéder à la documentation sur la plateforme Windows proprement dite, consultez la documentation Windows.
Applications clientes de bureau natives
Une application cliente de bureau native, ou application Win32, est une application de bureau Windows écrite en C ou C++ qui utilise des API Windows C ou API COM (Component Object Model) natives, des API CRT et de Bibliothèque standard, et des bibliothèques tierces. Avec une application Win32 qui s’exécute dans une fenêtre, le développeur doit gérer les messages Windows à l’intérieur d’une fonction de procédure Windows. Malgré le nom, une application Win32 peut être compilée en tant que binaire 32 bits (x86) ou 64 bits (x64). Dans l’IDE Visual Studio, les termes x86 et Win32 sont synonymes.
Les applications console C++ s’exécutent à partir de la ligne de commande dans une fenêtre de console, et peuvent afficher uniquement une sortie texte.
La plateforme Windows universelle (UWP) est l’API Windows moderne. Les applications UWP s’exécutent sur Windows 11, Windows 10, XBox, Windows Phone, Surface Hub et d’autres appareils. Les applications UWP utilisent XAML pour l’interface utilisateur, et sont entièrement compatibles avec les fonctionnalités tactiles. Une application de bureau est distincte d’une application de plateforme Windows universelle (UWP).
Pour plus d’informations sur la comparaison entre les applications de bureau et les applications UWP, consultez Choisir votre technologie.
La prise en charge C++ d’origine pour UWP consistait en C++/CX, un dialecte de C++ avec des extensions de syntaxe, ou la bibliothèque WRL (Windows Runtime Library), basée sur C++ standard et COM. C++/CX et WRL sont toujours pris en charge, mais non recommandés pour le nouveau développement.
Pour les nouveaux projets, nous vous recommandons C++/WinRT, qui est entièrement basé sur le langage C++ standard et offre des performances en terme de rapidité.
Une application ou un composant C++/CLI utilise des extensions de la syntaxe C++ (tel qu’autorisé par la norme C++) pour activer l’interaction entre .NET et le code C++ natif. Une application C++/CLI peut avoir certaines parties qui s’exécutent en mode natif et d’autres qui s’exécutent sur le .NET Framework avec accès à la bibliothèque de classes de base .NET. C++/CLI est l’option préférée lorsque vous avez du code C++ natif qui doit fonctionner avec du code écrit en C# ou Visual Basic. Elle est destinée à être utilisée dans les DLL .NET plutôt que dans le code de l’interface utilisateur.
Dans Windows 10 et versions ultérieures, vous pouvez empaqueter votre application de bureau ou objet COM existant en tant qu’application UWP. Elle peut utiliser des fonctionnalités UWP telles que l’entrée tactile, ou appeler des API à partir de l’ensemble d’API Windows moderne. Vous pouvez également ajouter une application UWP à une solution de bureau dans Visual Studio, les empaqueter ensemble dans un package unique, et utiliser des API Windows pour communiquer entre elles.
Visual Studio 2017 version 15.4 et ultérieures vous permettent de créer un projet de package d’application Windows pour simplifier considérablement le travail d’empaquetage de votre application de bureau existante. Quelques restrictions s’appliquent aux API ou appels de Registre que votre application de bureau peut utiliser. Toutefois, dans de nombreux cas, vous pouvez créer d’autres chemins de code pour obtenir des fonctionnalités similaires lors de l’exécution dans un package d’application.
En général, la programmation .NET en C# est moins complexe et moins sujette aux erreurs, et a une API orientée objet plus moderne que Win32 ou MFC. Dans la plupart des cas, ses performances sont plus que suffisantes.
.NET dispose de WPF (Windows Presentation Foundation) pour des graphismes enrichis, et vous pouvez consommer Win32 et l’API Windows Runtime moderne. En règle générale, nous vous recommandons d’utiliser C++ pour les applications de bureau lorsque vous avez besoin de ce qui suit :
Contrôle précis de l’utilisation de la mémoire
Économies maximales en terme de consommation d’énergie
Utilisation du GPU pour le calcul général
Accès à DirectX
Utilisation intensive des bibliothèques C++ standard
Il est également possible de combiner la puissance et l’efficacité de C++ avec la programmation .NET. Vous pouvez créer une interface utilisateur en C#, et utiliser C++/CLI pour permettre à l’application de consommer des bibliothèques C++ natives.
Les pilotes sont des composants de bas niveau qui rendent les données des périphériques matériels accessibles aux applications et à d’autres composants du système d’exploitation.
Un service Windows est un programme qui peut s’exécuter en arrière-plan avec peu ou pas d’interaction utilisateur. Ces programmes sont appelés démons sur les systèmes UNIX.
De nombreux composants Windows sont implémentés en tant qu’objets COM et suivent les règles COM standard pour la création d’objets, la découverte d’interface et la destruction d’objets. L’utilisation d’objets COM à partir d’applications de bureau C++ est relativement simple, mais l’écriture de votre propre objet COM est une tâche plus avancée.
Une application MFC est une application de bureau Windows qui utilise Microsoft Foundation Classes pour créer l’interface utilisateur. Une application MFC peut également utiliser des composants COM ainsi que des API CRT et de Bibliothèque standard.
MFC fournit un wrapper orienté objet C++ mince sur la boucle de message de fenêtre et les API Windows. MFC est le choix par défaut pour les applications (en particulier les applications d’entreprise) qui ont de nombreux contrôles d’interface utilisateur ou contrôles utilisateur personnalisés.
MFC fournit des classes d’assistance pratiques pour la gestion des fenêtres, la sérialisation, la manipulation de texte, l’impression, et des éléments d’interface utilisateur modernes tels que le ruban. Pour être efficace avec MFC, vous devez connaître Win32.
Kits de développement logiciel (SDK), bibliothèques et fichiers d’en-tête
Visual Studio inclut la bibliothèque C Runtime (CRT), la Bibliothèque standard C++ et d’autres bibliothèques propres à Microsoft. La plupart des dossiers qui contiennent des fichiers d’en-tête pour ces bibliothèques se trouvent dans le répertoire d’installation de Visual Studio, dans le dossier \VC\ (par exemple, C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.39.33519\include\). Les fichiers d’en-tête Windows et CRT se trouvent dans le dossier d’installation du SDK Windows (par exemple, C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\ucrt\)
Le gestionnaire de package vcpkg vous permet d’installer facilement des centaines de bibliothèques open source tierces pour Windows. Pour plus d’informations, consultez vcpkg.
Les bibliothèques Microsoft incluent :
Bibliothèque MFC (Microsoft Foundation Classes) : infrastructure orientée objet conçue pour la création de programmes Windows traditionnels (notamment des applications d’entreprise) qui possèdent des interfaces utilisateur riches dotées de boutons, de zones de liste, d’arborescences et d’autres contrôles. Pour plus d'informations, consultez MFC Desktop Applications.
Bibliothèque ATL (Active Template Library) : bibliothèque d'assistance puissante pour créer des composants COM. Pour plus d'informations, consultez ATL COM Desktop Components.
C++ AMP (C++ Accelerated Massive Parallelism) : bibliothèque qui permet un travail de calcul général à hautes performances sur le GPU. Pour plus d'informations, consultez C++ AMP (C++ Accelerated Massive Parallelism).
Runtime d'accès concurrentiel : bibliothèque qui simplifie le travail de programmation parallèle et asynchrone pour les appareils dotés de plusieurs cœurs, voire de nombreux cœurs. Pour plus d'informations, consultez Concurrency Runtime.
De nombreux scénarios de programmation Windows requièrent également le Kit de développement logiciel Windows, qui inclut les fichiers d'en-tête qui permettent l'accès aux composants du système d'exploitation Windows. Par défaut, Visual Studio installe le SDK Windows en tant que composant de la charge de travail C++ Desktop, qui permet le développement d’applications Windows universelles. Pour développer des applications UWP, vous avez besoin d’une version Windows 10 ou ultérieure du SDK Windows.
Pour plus d’informations et un lien de téléchargement, consultez SDK Windows.
Pour plus d’informations sur les SDK Windows pour les versions antérieures de Windows, consultez l’archive du SDK Windows.
L’emplacement par défaut pour toutes les versions du SDK Windows que vous installez est : Program Files (x86)\Windows Kits.
Outils de développement
Visual Studio inclut un débogueur puissant pour le code natif, des outils d’analyse statique, des outils de débogage graphique, un éditeur de code complet, la prise en charge des tests unitaires et de nombreux autres outils et utilitaires.
Créer une application console Windows simple. Une application console Win32 (ou Win64) n’a aucune fenêtre et aucune boucle de message. Elle s'exécute dans la fenêtre de console et l'entrée et la sortie sont gérées via la ligne de commande.
Explique comment créer une application de bureau Windows cliente enrichie, qui utilise l’animation Windows et Direct2D pour créer une interface utilisateur de type carrousel. Ce tutoriel n’a pas été mis à jour depuis Windows 7, mais il fournit toujours une introduction approfondie à la programmation Win32.
Vous souhaitez en savoir plus sur l’utilisation de Visual Studio pour développer et tester des applications, mais vous ne savez pas par où commencer ? Commencez ici !