Types d’applications de bureau Windows C++
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.
- Pour bien démarrer avec la programmation Windows C++ traditionnelle, consultez Bien démarrer avec Win32 et C++.
- Pour obtenir un exemple d’application de bureau C++ traditionnelle qui utilise des graphismes sophistiqués, consultez Hilo : Développement d’applications C++ pour Windows.
Applications en ligne de commande (console)
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.
- Pour plus d’informations, consultez Créer une calculatrice de console en C++.
Applications UWP
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.
- Pour plus d’informations sur UWP, consultez Qu’est-ce qu’une application de plateforme Windows universelle (UWP) ? et Guide des applications Windows universelles.
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.
- Pour plus d’informations, consultez Programmation .NET avec C++/CLI (Visual C++).
Pont du bureau
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.
- Pour plus d’informations, consultez Desktop Bridge.
C++ ou .NET ?
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.
- Pour plus d’informations, consultez Programmation .NET avec C++/CLI.
Jeux
Les jeux DirectX peuvent s’exécuter sur PC ou Xbox.
- Pour plus d’informations, consultez Graphiques et jeux DirectX.
Clients de base de données SQL Server
Pour accéder à des bases de données SQL Server à partir de code natif, utilisez ODBC ou OLE DB.
- Pour plus d’informations, consultez SQL Server Native Client.
Pilotes de périphérique Windows
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.
- Pour plus d’informations, consultez Windows Driver Kit (WDK).
Services Windows
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.
- Pour plus d’informations, voir Services.
COM
Le modèle COM (Component Object Model) est une spécification qui permet à des programmes écrits dans différents langages d’interagir.
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.
La bibliothèque ATL (Active Template Library) fournit des macros et des fonctions d’assistance qui simplifient le développement COM. Pour plus d’informations, consultez Composants de bureau COM ATL.
MFC
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.
- Pour plus d’informations, consultez Bien démarrer avec le développement dans Visual Studio et Présentation du développement C++ dans Visual Studio.
Contenu de cette section
Lien | Description |
---|---|
Procédure pas à pas : Création d’applications de bureau Windows (C++) | Créer une application de bureau Windows native. |
Guide pratique pour utiliser le SDK Windows dans une application de bureau Windows | Contient les étapes nécessaires pour configurer votre projet à générer à l’aide du SDK Windows. |
Procédure pas à pas : Création d’un programme C++ standard | Créer une application console Windows. |
Procédure pas à pas : Créer une calculatrice de console en C++ | 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. |
Déploiement d’applications de bureau natives | Déployer des applications natives sur Windows. |
Procédure pas à pas : Création et utilisation d’une bibliothèque statique | Explique comment créer un fichier binaire .lib . |
Assistant Windows Desktop | Utiliser l’Assistant pour créer des projets Windows. |
Bibliothèque ATL (Active Template Library) | Utiliser la bibliothèque ATL pour créer des composants COM en C++. |
Classes partagées ATL et MFC | Utiliser des classes telles que CString qui sont partagées dans ATL et MFC. |
Microsoft Foundation Classes (MFC) | Utiliser MFC pour créer des applications Windows petites ou volumineuses avec des boîtes de dialogue et des contrôles. |
Accès aux données | OLE DB et ODBC |
Texte et chaînes | Différents types de chaînes sur Windows. |
Utilisation des fichiers de ressources | Explique comment ajouter des images, des icônes, des tables de chaînes et d’autres ressources à une application de bureau. |
Ressources pour la création d’un jeu à l’aide de DirectX (C++) | Liens vers du contenu pour la création de jeux en C++. |
Articles connexes
Intitulé | Description |
---|---|
Développement Windows | Contient des informations sur l'API Windows et COM. (Certaines API Windows et DLL tierces sont implémentées comme objets COM.) |
Hilo : Développement d’applications C++ pour Windows 7 | 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. |
Développement .NET avec C++/CLI | Créer des wrappers pour les bibliothèques C++ natives qui leur permettent de communiquer avec des applications et composants .NET. |
Extensions de composants pour .NET et UWP | Informations de référence pour les éléments de syntaxe partagés par C++/CX et C++/CLI. |
Applications Windows universelles (C++) | Écrire des applications UWP à l’aide de C++/CX ou de la bibliothèque WRL (Windows Runtime Template). |
Attributs C++ pour COM et .NET | Attributs non standard pour la programmation Windows-uniquement à l’aide de .NET ou COM. |