Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Een bureaubladtoepassing in C++ is een systeemeigen toepassing die toegang heeft tot de volledige set Windows-API's en wordt uitgevoerd in een venster of in de systeemconsole. Desktoptoepassingen in C++ kunnen worden uitgevoerd op Windows XP via Windows 11 (hoewel Windows XP niet meer officieel wordt ondersteund en er sindsdien veel nieuwe Windows-API's zijn).
Elke bureaubladtoepassing in C++ kan C Runtime (CRT) en Standard Library-klassen en -functies, COM-objecten en de openbare Windows-functies gebruiken, die gezamenlijk bekend staan als de Windows-API. Zie Aan de slag met Win32 en C++voor een inleiding tot Windows-bureaubladtoepassingen in C++.
Er zijn verschillende algemene categorieën Windows-toepassingen die u kunt maken met C++, zoals hieronder wordt beschreven. Elk heeft een eigen programmeermodel en een set Windows-specifieke bibliotheken. De C++-standaardbibliotheek en C++-bibliotheken van derden kunnen in elk van deze bibliotheken worden gebruikt.
Zie de Windows-documentatie voor documentatie over het Windows-platform zelf.
Systeemeigen bureaubladclienttoepassingen
Een native desktop client applicatie, of Win32-toepassing, is een Windows-bureaubladtoepassing die is geschreven in C of C++ en gebruikmaakt van native Windows C API's, CRT, COM (Component Object Model) API's, Standaardbibliotheek-API's en bibliotheken van derden. Voor een Win32-toepassing die in een venster wordt uitgevoerd, moet de ontwikkelaar Windows-berichten verwerken binnen een Windows-procedurefunctie. Ondanks de naam kan een Win32-toepassing worden gecompileerd als een 32-bits (x86) of 64-bits (x64) binair bestand. In de Visual Studio IDE zijn de termen x86 en Win32 synoniem.
- Zie Aan de slag met Win32 en C++om aan de slag te gaan met traditionele Windows C++-programmering.
- Zie Hilo: C++-toepassingen ontwikkelen voor Windows voor een voorbeeld van een traditionele C++-bureaubladtoepassing die geavanceerde afbeeldingen gebruikt.
Opdrachtregeltoepassingen (console)
C++ consoletoepassingen worden uitgevoerd vanaf de opdrachtregel in een consolevenster en kunnen alleen tekstuitvoer weergeven.
- Zie Een consolecalculator maken in C++voor meer informatie.
UWP-toepassingen
Het Universal Windows Platform (UWP) is de moderne Windows-API. UWP-apps worden uitgevoerd op Windows 11, Windows 10, XBox, Windows Phone, Surface Hub en andere apparaten. UWP-apps maken gebruik van XAML voor de gebruikersinterface en zijn volledig aanraakgevoelig. Een bureaubladtoepassing verschilt van een UWP-app (Universal Windows Platform).
- Zie Uw technologie kiezen voor meer informatie over desktop versus UWP-toepassingen.
- Zie Wat is een UWP-app (Universal Windows Platform) en handleiding voor Universele Windows-apps voor Windows voor meer informatie over UWP.
De oorspronkelijke C++-ondersteuning voor UWP bestond uit C++/CX, een dialect van C++ met syntaxisextensies of de Windows Runtime Library (WRL), die is gebaseerd op standaard C++ en COM. Zowel C++/CX als WRL worden nog steeds ondersteund, maar niet aanbevolen voor nieuwe ontwikkeling.
Voor nieuwe projecten raden we C++/WinRT aan, die volledig is gebaseerd op standaard C++ en snellere prestaties biedt.
Een C++/CLI-toepassing of -onderdeel maakt gebruik van extensies voor C++-syntaxis (zoals toegestaan door C++ Standard) om interactie tussen .NET en systeemeigen C++-code mogelijk te maken. Een C++/CLI-toepassing kan onderdelen bevatten die systeemeigen worden uitgevoerd en onderdelen die worden uitgevoerd op .NET Framework met toegang tot de .NET Base Class Library. C++/CLI is de voorkeursoptie wanneer u systeemeigen C++-code hebt die moet werken met code die is geschreven in C# of Visual Basic. Het is bedoeld voor gebruik in .NET-DLL's in plaats van in gebruikersinterfacecode.
- Zie .NET Programmeren met C++/CLI (Visual C++) voor meer informatie.
Bureaubladbrug
In Windows 10 en hoger kunt u uw bestaande bureaubladtoepassing of COM-object verpakken als een UWP-app. Het kan UWP-functies gebruiken, zoals aanraken, of API's aanroepen vanuit de moderne Windows API-set. U kunt ook een UWP-app toevoegen aan een bureaubladoplossing in Visual Studio, deze in één pakket verpakken en Windows-API's gebruiken om ertussen te communiceren.
Met Visual Studio 2017 versie 15.4 en hoger kunt u een Windows-toepassingspakketproject maken om het pakketwerk van uw bestaande bureaubladtoepassing aanzienlijk te vereenvoudigen. Er gelden enkele beperkingen voor de register-aanroepen of API's die uw bureaubladtoepassing kan gebruiken. In veel gevallen kunt u echter alternatieve codepaden maken om vergelijkbare functionaliteit te bereiken tijdens het uitvoeren in een app-pakket.
- Zie Desktop Bridge voor meer informatie.
C++ of .NET?
Over het algemeen is .NET-programmering in C# minder complex, minder foutgevoelig en heeft een modernere objectgeoriënteerde API dan Win32 of MFC. In de meeste gevallen zijn de prestaties meer dan voldoende.
.NET bevat de Windows Presentation Foundation (WPF) voor uitgebreide afbeeldingen en u kunt zowel Win32 als de moderne Windows Runtime-API gebruiken. Als algemene regel raden we u aan C++ te gebruiken voor bureaubladtoepassingen wanneer u het volgende nodig hebt:
- nauwkeurige controle over geheugengebruik
- de uiterste zuinigheid in energieverbruik
- gebruik van de GPU voor algemene computing
- toegang tot DirectX
- intensief gebruik van standaard-C++-bibliotheken
Het is ook mogelijk om de kracht en efficiëntie van C++ te combineren met .NET-programmering. U kunt een gebruikersinterface maken in C# en C++/CLI gebruiken om de toepassing in staat te stellen systeemeigen C++-bibliotheken te gebruiken.
- Zie .NET Programmeren met C++/CLI voor meer informatie.
Games
DirectX-games kunnen worden uitgevoerd op de pc of Xbox.
- Zie DirectX Graphics and Gaming voor meer informatie.
SQL Server-database clients
Als u toegang wilt krijgen tot SQL Server-databases vanuit systeemeigen code, gebruikt u ODBC of OLE DB.
- Zie SQL Server Native Client voor meer informatie.
Windows-apparaatstuurprogramma's
Stuurprogramma's zijn onderdelen op laag niveau die gegevens van hardwareapparaten toegankelijk maken voor toepassingen en andere onderdelen van het besturingssysteem.
- Zie Windows Driver Kit (WDK) voor meer informatie.
Windows-diensten
Een Windows-service is een programma dat op de achtergrond kan worden uitgevoerd met weinig of geen gebruikersinteractie. Deze programma's worden daemons genoemd op UNIX-systemen.
- Zie Servicesvoor meer informatie.
COM
Het Component Object Model (COM) is een specificatie waarmee programma's die in verschillende talen zijn geschreven, met elkaar kunnen samenwerken.
Veel Windows-onderdelen worden geïmplementeerd als COM-objecten en volgen standaard COM-regels voor het maken van objecten, interfacedetectie en objectvernietiging. Het gebruik van COM-objecten vanuit C++-bureaubladtoepassingen is relatief eenvoudig, maar het schrijven van uw eigen COM-object is geavanceerder.
De Active Template Library (ATL) biedt macro's en helperfuncties waarmee COM-ontwikkeling wordt vereenvoudigd. Zie ATL COM-bureaubladonderdelen voor meer informatie.
MFC
Een MFC-toepassing is een Windows-bureaubladtoepassing die gebruikmaakt van de Microsoft Foundation-klassen om de gebruikersinterface te maken. Een MFC-toepassing kan ook COM-onderdelen en CRT- en Standard Library-API's gebruiken.
MFC biedt een dunne C++-objectgeoriënteerde wrapper via de vensterberichtlus en Windows-API's. MFC is de standaardkeuze voor toepassingen, met name bedrijfstoepassingen, die veel besturingselementen voor de gebruikersinterface of aangepaste gebruikersbesturingselementen hebben.
MFC biedt handige helperklassen voor vensterbeheer, serialisatie, tekstmanipulatie, afdrukken en moderne elementen van de gebruikersinterface, zoals het lint. Als u effectief wilt zijn met MFC, moet u bekend zijn met Win32.
SDK's, bibliotheken en headerbestanden
Visual Studio bevat de C Runtime Library (CRT), de C++ Standard Library en andere Microsoft-specifieke bibliotheken. De meeste mappen die headerbestanden voor deze bibliotheken bevatten, bevinden zich in de installatiemap van Visual Studio onder de map \VC\ (bijvoorbeeld C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.39.33519\include\
). De Windows- en CRT-headerbestanden vindt u in de windows-SDK-installatiemap (bijvoorbeeld C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\ucrt\
)
Met vcpkg-pakketbeheer kunt u gemakkelijk honderden opensource-bibliotheken van derden voor Windows installeren. Zie vcpkg voor meer informatie.
De Microsoft-bibliotheken zijn onder andere:
Microsoft Foundation Classes (MFC): Een objectgeoriënteerd framework voor het maken van traditionele Windows-programma's, met name bedrijfstoepassingen, met uitgebreide gebruikersinterfaces met knoppen, keuzelijsten, structuurweergaven en andere besturingselementen. Zie MFC Desktop Applications voor meer informatie.
Active Template Library (ATL): een krachtige helperbibliotheek voor het maken van COM-onderdelen. Zie ATL COM Desktop Components voor meer informatie.
C++ AMP (C++ Accelerated Massive Parallelism): een bibliotheek waarmee algemene rekenkundige prestaties op de GPU mogelijk zijn. Zie C++ AMP (C++ Accelerated Massive Parallelism) voor meer informatie.
Concurrency Runtime: een bibliotheek die het werk van parallelle en asynchrone programmering voor multicore- en apparaten met veel kernen vereenvoudigt. Zie Concurrency Runtime voor meer informatie.
Veel Windows-programmeerscenario's vereisen ook de Windows SDK, waaronder de headerbestanden die toegang tot de onderdelen van het Windows-besturingssysteem mogelijk maken. Visual Studio installeert de Windows SDK standaard als onderdeel van de C++ Desktop-workload, waardoor universele Windows-apps kunnen worden ontwikkeld. Als u UWP-apps wilt ontwikkelen, hebt u een Windows 10- of nieuwere versie van de Windows SDK nodig.
- Zie Windows SDK voor meer informatie en een downloadkoppeling.
- Zie het Windows SDK-archief voor meer informatie over de Windows SDK's voor eerdere versies van Windows.
De standaardlocatie voor alle versies van de Windows SDK die u installeert, is: Program Files (x86)\Windows Kits
.
Ontwikkelhulpprogramma's
Visual Studio bevat een krachtig foutopsporingsprogramma voor systeemeigen code, hulpprogramma's voor statische analyse, hulpprogramma's voor grafische foutopsporing, een volledige code-editor, ondersteuning voor eenheidstests en vele andere hulpprogramma's en hulpprogramma's.
- Zie Aan de slag met ontwikkelen met Visual Studio en Overzicht van C++-ontwikkeling in Visual Studio voor meer informatie.
In deze sectie
Verbinden | Beschrijving |
---|---|
Overzicht: Windows-bureaubladtoepassingen maken (C++) | Maak een systeemeigen Windows-bureaubladtoepassing. |
Procedure: De Windows SDK gebruiken in een Windows-bureaubladtoepassing | Bevat stappen voor het instellen van uw project voor het bouwen met behulp van de Windows SDK. |
Walkthrough: Een standaard C++-programma maken | Maak een Windows-consoletoepassing. |
Overzicht: Een consolecalculator maken in C++ | Maak een eenvoudige Windows-consoletoepassing. Een Win32-consoletoepassing (of Win64) heeft geen eigen venster en geen berichtenlus. Deze wordt uitgevoerd in het consolevenster en de invoer en uitvoer worden via de opdrachtregel verwerkt. |
Systeemeigen bureaubladtoepassingen implementeren | Systeemeigen toepassingen implementeren in Windows. |
Overzicht: Een statische bibliotheek maken en gebruiken | Een binair bestand maken .lib . |
Windows Desktop Wizard | Gebruik de wizard om nieuwe Windows-projecten te maken. |
Active Template Library (ATL) | Gebruik de ATL-bibliotheek om COM-onderdelen te maken in C++. |
ATL- en MFC-gedeelde klassen | Gebruik klassen zoals CString die worden gedeeld in ATL en MFC. |
Microsoft Foundation-klassen (MFC) | MFC gebruiken om grote of kleine Windows-toepassingen te maken met dialoogvensters en besturingselementen |
Gegevenstoegang | OLE DB en ODBC |
Tekst en tekenreeksen | Verschillende tekenreekstypen in Windows. |
Werken met hulpbronnenbestanden | Afbeeldingen, pictogrammen, tekenreekstabellen en andere resources toevoegen aan een bureaubladtoepassing. |
Bronnen voor het maken van een game met DirectX (C++) | Koppelingen naar inhoud voor het maken van games in C++. |
Verwante artikelen
Titel | Beschrijving |
---|---|
Windows-ontwikkeling | Bevat informatie over de Windows-API en COM. (Sommige Windows-API's en DLL's van derden worden geïmplementeerd als COM-objecten.) |
Hilo: C++-toepassingen ontwikkelen voor Windows 7 | Hierin wordt beschreven hoe u een windows-bureaubladtoepassing met uitgebreide client maakt die gebruikmaakt van Windows Animation en Direct2D om een carrouselgebaseerde gebruikersinterface te maken. Deze zelfstudie is niet bijgewerkt sinds Windows 7, maar biedt nog steeds een uitgebreide inleiding tot Win32-programmering. |
.NET-ontwikkeling met C++/CLI | Maak wrappers voor systeemeigen C++-bibliotheken waarmee deze kan communiceren met .NET-toepassingen en -onderdelen. |
Onderdeelextensies voor .NET en UWP | Naslaginformatie voor syntaxiselementen die worden gedeeld door C++/CX en C++/CLI. |
Universele Windows-apps (C++) | SCHRIJF UWP-toepassingen met C++/CX of Windows Runtime Template Library (WRL). |
C++-kenmerken voor COM en .NET | Niet-standaardkenmerken voor programmeren met alleen Windows met .NET of COM. |