Vue d'ensemble de la programmation Windows en C++
Il existe plusieurs grandes catégories d’applications Windows que vous pouvez créer avec C++. Chacun possède son propre modèle de programmation et son ensemble de bibliothèques spécifiques à Windows, mais la bibliothèque standard C++ et les bibliothèques C++ tierces peuvent être utilisées dans n’importe laquelle d’entre elles.
Cette section explique comment utiliser Visual Studio et les bibliothèques de wrapper MFC/ATL pour créer des programmes Windows. Pour obtenir de la documentation sur la plateforme Windows elle-même, consultez la documentation Windows.
Applications de 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 la sortie de texte uniquement. Pour plus d’informations, consultez Créer une calculatrice de console en C++.
Applications clientes de bureau natives
Une application cliente de bureau native est une application fenêtré C ou C++ qui utilise les API Windows C natives d’origine ou les API COM (Component Object Model) pour accéder au système d’exploitation. Ces API sont elles-mêmes écrites principalement en C. Il existe plusieurs façons de créer une application de bureau native : vous pouvez programmer directement à l’aide des API Win32, à l’aide d’une boucle de message de style C qui traite les événements du système d’exploitation. Vous pouvez également programmer à l’aide de Microsoft Foundation Classes (MFC), une bibliothèque C++ légèrement orientée objet qui encapsule Win32. Aucune approche n’est considérée comme « moderne » par rapport à la plateforme Windows universelle (UWP), mais les deux sont toujours entièrement prises en charge et ont des millions de lignes de code s’exécutant dans le monde aujourd’hui. Une application Win32 qui s’exécute dans une fenêtre nécessite que le développeur fonctionne explicitement avec 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 Prise en main de Win32 et C++. Une fois que vous avez acquis une certaine compréhension de Win32, il sera plus facile d’en savoir plus sur les applications de bureau MFC. Pour obtenir un exemple d’application de bureau C++ traditionnelle qui utilise des graphiques sophistiqués, consultez Hilo : Développement d’applications C++ pour Windows.
C++ ou .NET ?
En général, la programmation .NET en C# est moins complexe, 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 Windows Presentation Foundation (WPF) pour les graphiques enrichis, et vous pouvez utiliser 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 des éléments suivants :
- Contrôle précis de l’utilisation de la mémoire
- l’économie la plus importante dans la consommation d’énergie
- utilisation du GPU pour l’informatique générale
- 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.
Composants COM
Le modèle objet de composant (COM) est une spécification qui permet aux programmes écrits dans différents langages de communiquer entre eux. 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 plus avancée. La bibliothèque de modèles actifs (ATL) fournit des macros et des fonctions d’assistance qui simplifient le développement COM. Pour plus d’informations, consultez les composants de bureau ATL COM.
Applications de la plateforme Windows universelle
Le plateforme Windows universelle (UWP) est l’API Windows moderne. Les applications UWP s’exécutent sur n’importe quel appareil Windows 10 ou Windows 11. Ils utilisent XAML pour l’interface utilisateur et sont entièrement tactiles. Pour plus d’informations sur UWP, consultez Qu’est-ce qu’une application plateforme Windows universelle (UWP) etguide des applications universelles Windows.
La prise en charge C++ d’origine pour UWP comprend (1) C++/CX, un dialecte de C++ avec des extensions de syntaxe, ou (2) la bibliothèque Windows Runtime (WRL), basée sur C++ standard et COM. C++/CX et WRL sont toujours pris en charge, mais pas recommandés pour le nouveau développement. Pour les nouveaux projets, nous vous recommandons C++/WinRT, qui est entièrement basé sur la norme C++ et offre des performances plus rapides.
Pont du bureau
Dans Windows 10 et versions ultérieures, vous pouvez empaqueter votre application de bureau ou votre objet COM existant en tant qu’application UWP. Il peut utiliser des fonctionnalités UWP telles que tactiles 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 eux.
Visual Studio 2017 version 15.4 et ultérieure vous permet 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 appels ou API 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.
Jeux
Les jeux DirectX peuvent s’exécuter sur le PC ou Xbox. Pour plus d’informations, consultez DirectX Graphics and Gaming.
Clients de base de données SQL Server
Pour accéder aux 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 le Kit de pilotes Windows (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.
Sdk, bibliothèques et fichiers d’en-tête
Visual Studio inclut la bibliothèque C Runtime (CRT), la bibliothèque C++ Standard et d’autres bibliothèques spécifiques à Microsoft. La plupart des dossiers include qui contiennent des fichiers d’en-tête pour ces bibliothèques se trouvent dans le répertoire d’installation de Visual Studio sous le dossier \VC\. Les fichiers d’en-tête Windows et CRT se trouvent dans le dossier d’installation du Kit de développement logiciel (SDK) Windows.
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 Kit de développement logiciel (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 Kit de développement logiciel (SDK) Windows. Pour plus d’informations et un lien de téléchargement, consultez le Kit de développement logiciel (SDK) Windows. (Pour plus d’informations sur les kits SDK Windows pour les versions antérieures de Windows, consultez le Archive du Kit de développement logiciel (SDK) Windows).
Program Files (x86)\Windows Kits est l’emplacement par défaut de toutes les versions du Kit de développement logiciel (SDK) Windows que vous avez installées.
D'autres plateformes, telles que Xbox et Azure, possèdent leurs propres Kits de développement logiciel que vous pouvez être amené à installer. Pour plus d'informations, consultez le Centre de développement DirectX et le Centre de développement Azure.
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 Prise en main du développement avec Visual Studio et Vue d’ensemble du développement C++ dans Visual Studio.
Contenu de cette section
-- | -- |
---|---|
Procédure pas à pas : création d’un programme C++ standard | Créez une application console Windows. |
Procédure pas à pas : création d’applications de bureau Windows (C++) | Créez une application de bureau Windows native. |
Assistant Windows Desktop | Utilisez l’Assistant pour créer des projets Windows. |
Bibliothèque ATL (Active Template Library) | Utilisez la bibliothèque ATL pour créer des composants COM en C++. |
Microsoft Foundation Classes (MFC) | Utiliser MFC pour créer des applications Windows volumineuses ou petites avec des dialogues et des contrôles |
Classes partagées ATL et MFC | Utilisez des classes telles que CString partagées dans ATL et MFC. |
Accès aux données | OLE DB et ODBC |
Texte et chaînes | Différents types de chaînes sur Windows. |
Ressources pour la création d’un jeu à l’aide de DirectX | |
Utilisation des fichiers de ressources | 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++. |
Guide pratique pour utiliser le Kit de développement logiciel (SDK) Windows dans une application de bureau Windows | Contient les étapes de configuration de votre projet pour générer à l’aide du Kit de développement logiciel (SDK) Windows. |
Déploiement des applications de bureau natives | Déployez des applications natives sur Windows. |
Articles connexes
Intitulé | Description |
---|---|
C++ dans Visual Studio | Rubrique parente pour le contenu du développeur Visual C++. |
Développement .NET avec C++/CLI | Créez des wrappers pour les bibliothèques C++ natives qui lui permettent de communiquer avec les applications et composants .NET. |
Extensions de composants pour .NET et UWP | Référence pour les éléments de syntaxe partagés par C++/CX et C++/CLI. |
Applications de plateforme Windows universelle (C++) | Écrire des applications UWP à l’aide de C++/CX ou de la bibliothèque de modèles Windows Runtime (WRL). |
Attributs C++ pour COM et .NET | Attributs non standard pour la programmation Windows uniquement à l’aide de .NET ou COM. |