Windows C++-Desktopanwendungstypen

Eine Desktopanwendung in C++ ist eine systemeigene Anwendung, die auf den vollständigen Satz von Windows-APIs zugreifen kann und entweder in einem Fenster oder in der Systemkonsole ausgeführt wird. Desktopanwendungen in C++ können unter Windows XP bis Windows 11 ausgeführt werden (obwohl Windows XP nicht mehr offiziell unterstützt wird und seitdem viele neue Windows-APIs vorhanden sind).

Eine Desktopanwendung in C++ kann CRT- (C Runtime) und Standard Library-Klassen und -Funktionen, COM-Objekte sowie jede der öffentlichen Windows-Funktionen verwenden, die insgesamt als Windows-API bezeichnet werden. Eine Einführung in Windows-Desktopanwendungen in C++ finden Sie unter Erste Schritte mit Win32 und C++.

Es gibt mehrere allgemeine Kategorien von Windows-Anwendungen, die Sie mit C++ erstellen können, wie unten beschrieben. Jedes verfügt über ein eigenes Programmiermodell und eine Reihe von Windows-spezifischen Bibliotheken. Die C++-Standardbibliothek und C++-Bibliotheken von Drittanbietern können in jedem dieser Bibliotheken verwendet werden.

Dokumentation zur Windows-Plattform selbst finden Sie in der Windows-Dokumentation.

Native Desktopclientanwendungen

Eine native Desktopclientanwendungoder Win32-Anwendung ist eine Windows-Desktopanwendung, die in C oder C++ geschrieben wurde und systemeigene Windows-C-APIs oder COM-APIs (Component Object Model) und Standardbibliotheks-APIs und Drittanbieterbibliotheksbibliotheken verwendet. Eine Win32-Anwendung, die in einem Fenster ausgeführt wird, erfordert, dass der Entwickler Windows-Nachrichten innerhalb einer Windows-Prozedurfunktion verarbeiten kann. Trotz des Namens kann eine Win32-Anwendung als 32-Bit-Binärdatei (x86) oder 64-Bit (x64) kompiliert werden. In der Visual Studio-IDE sind die Begriffe x86 und Win32 synonym.

Befehlszeilenanwendungen (Konsole)

C++-Konsolenanwendungen werden über die Befehlszeile in einem Konsolenfenster ausgeführt und können nur Textausgabe anzeigen.

UWP-Anwendungen

Die universelle Windows-Plattform (UWP) ist die moderne Windows-API. UWP-Apps werden unter Windows 11, Windows 10, XBox, Windows Phone, Surface Hub und anderen Geräten ausgeführt. UWP-Apps verwenden XAML für die Benutzeroberfläche und sind vollständig per Toucheingabe aktiviert. Eine Desktopanwendung unterscheidet sich von einer UWP-App (Universelle Windows-Plattform).

Die ursprüngliche C++-Unterstützung für UWP bestand aus C++/CX, einem Dialekt von C++ mit Syntaxerweiterungen oder der Windows-Runtime-Bibliothek (WRL), die auf Standard C++ und COM basiert. Sowohl C++/CX als auch WRL werden weiterhin unterstützt, aber nicht für die neue Entwicklung empfohlen.

Für neue Projekte empfehlen wir C++/WinRT, das vollständig auf Standard C++ basiert und eine schnellere Leistung bietet.

Eine C++/CLI-Anwendung oder -Komponente verwendet Erweiterungen für C++-Syntax (wie vom C++-Standard zulässig), um die Interaktion zwischen .NET und systemeigenem C++-Code zu ermöglichen. Eine C++/CLI-Anwendung kann Teile enthalten, die nativ ausgeführt werden, und Teile, die auf .NET Framework mit Zugriff auf die .NET-Basisklassenbibliothek ausgeführt werden. C++/CLI ist die bevorzugte Option, wenn Sie über systemeigenen C++-Code verfügen, der mit Code arbeiten muss, der in C# oder Visual Basic geschrieben wurde. Sie ist für die Verwendung in .NET-DLLs und nicht in Benutzeroberflächencode vorgesehen.

Desktop-Brücke

In Windows 10 und höher können Sie Ihre vorhandene Desktopanwendung oder das COM-Objekt als UWP-App verpacken. Sie kann UWP-Features wie Toucheingabe verwenden oder APIs aus dem modernen Windows-API-Satz aufrufen. Sie können einer Desktoplösung in Visual Studio auch eine UWP-App hinzufügen, sie in einem einzigen Paket zusammen packen und Windows-APIs verwenden, um zwischen ihnen zu kommunizieren.

Mit Visual Studio 2017, Version 15.4 und höher, können Sie ein Windows-Anwendungspaketprojekt erstellen, um die Verpackung Ihrer vorhandenen Desktopanwendung erheblich zu vereinfachen. Einige Einschränkungen gelten für die Registrierungsaufrufe oder APIs, die Ihre Desktopanwendung verwenden kann. In vielen Fällen können Sie jedoch alternative Codepfade erstellen, um ähnliche Funktionen zu erzielen, während Sie in einem App-Paket ausgeführt werden.

C++ oder .NET?

Im Allgemeinen ist die .NET-Programmierung in C# weniger komplex, weniger fehleranfällig und verfügt über eine modernere objektorientierte API als Win32 oder MFC. In den meisten Fällen ist ihre Leistung mehr als ausreichend.

.NET bietet die Windows Presentation Foundation (WPF) für umfangreiche Grafiken, und Sie können Win32 und die moderne Windows-Runtime-API nutzen. In der Regel wird empfohlen, C++ für Desktopanwendungen zu verwenden, wenn Sie Folgendes benötigen:

  • präzise Kontrolle über die Speicherauslastung
  • höchste Ökonomie des Stromverbrauchs
  • Verwendung der GPU für allgemeine Computer
  • Zugriff auf DirectX
  • hohe Verwendung von C++-Standardbibliotheken

Es ist auch möglich, die Leistungsfähigkeit und Effizienz von C++ mit .NET-Programmierung zu kombinieren. Sie können eine Benutzeroberfläche in C# erstellen und C++/CLI verwenden, um der Anwendung die Nutzung nativer C++-Bibliotheken zu ermöglichen.

Spiele

DirectX-Spiele können auf dem PC oder auf der Xbox ausgeführt werden.

SQL Server-Datenbankclients

Verwenden Sie ODBC oder OLE DB, um über systemeigenen Code auf SQL Server-Datenbanken zuzugreifen.

Windows-Gerätetreiber

Treiber sind Komponenten auf niedriger Ebene, die Daten von Hardwaregeräten für Anwendungen und andere Betriebssystemkomponenten zugänglich machen.

Windows-Dienste

Ein Windows-Dienst ist ein Programm, das im Hintergrund mit wenig oder ohne Benutzerinteraktion ausgeführt werden kann. Diese Programme werden als Daemons auf UNIX-Systemen bezeichnet.

  • Weitere Informationen finden Sie unter Dienste.

COM

Das Component Object Model (COM) ist eine Spezifikation, mit der Programme, die in verschiedenen Sprachen geschrieben wurden, miteinander interoperieren können.

Viele Windows-Komponenten werden als COM-Objekte implementiert und befolgen standardmäßige COM-Regeln für die Objekterstellung, die Schnittstellenermittlung und die Objektvernichtung. Die Verwendung von COM-Objekten aus C++-Desktopanwendungen ist relativ einfach, das Schreiben ihres eigenen COM-Objekts ist jedoch komplexer.

Die Active Template Library (ATL) stellt Makros und Hilfsfunktionen bereit, die die COM-Entwicklung vereinfachen. Weitere Informationen finden Sie unter ATL COM Desktop Components.

MFC

Eine MFC-Anwendung ist eine Windows-Desktopanwendung, die die Microsoft Foundation Classes zum Erstellen der Benutzeroberfläche verwendet. Eine MFC-Anwendung kann auch COM-Komponenten und CRT- und Standardbibliothek-APIs verwenden.

MFC stellt einen dünnen, objektorientierten C++-Wrapper über die Fensternachrichtenschleife und Windows-APIs bereit. MFC ist die Standardauswahl für Anwendungen, insbesondere für Anwendungen vom Unternehmenstyp, die über viele Benutzeroberflächensteuerelemente oder benutzerdefinierte Benutzersteuerelemente verfügen.

MFC stellt bequeme Hilfsklassen für die Serialisierung, Textbearbeitung, das Drucken sowie moderne Benutzeroberflächenelemente wie das Menüband bereit. Um mit MFC effektiv zu sein, sollten Sie mit Win32 vertraut sein.

SDKs, Bibliotheken und Headerdateien

Visual Studio enthält die C-Runtime-Bibliothek (C Runtime Library, CRT), die C++-Standardbibliothek und andere microsoftspezifische Bibliotheken. Die meisten Ordner, die Headerdateien für diese Bibliotheken enthalten, befinden sich im Visual Studio-Installationsverzeichnis unter dem Ordner \VC\ (z. B. C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.39.33519\include\). Die Windows- und CRT-Headerdateien befinden sich im Windows SDK-Installationsordner (z. B. C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\ucrt\)

Mit dem vcpkg-Paket-Manager können Sie Hunderte von Open Source-Bibliotheken von Drittanbietern für Windows bequem installieren. Weitere Informationen finden Sie unter vcpkg.

Die Microsoft-Bibliotheken schließen Folgendes ein:

  • Microsoft Foundation Classes (MFC): Ein objektorientiertes Framework zum Erstellen herkömmlicher Windows-Programme (im Besonderen Unternehmensanwendungen), die über komplexe Benutzeroberflächen mit Schaltflächen, Listenfeldern, Strukturansichten und anderen Steuerelementen verfügen. Weitere Informationen finden Sie unter MFC Desktop Applications.

  • Active Template Library (ATL): Eine leistungsstarke Hilfebibliothek zum Erstellen von COM-Komponenten. Weitere Informationen finden Sie unter ATL COM Desktop Components.

  • C++ AMP (C++ Accelerated Massive Parallelism): Eine Bibliothek, die leistungsstarke allgemeine Computerarbeit auf der GPU ermöglicht. Weitere Informationen finden Sie unter C++ AMP (C++ Accelerated Massive Parallelism).

  • Concurrency Runtime: Eine Bibliothek, mit der die Arbeit mit paralleler und asynchroner Programmierung für Viel- und Mehrkerngeräte vereinfacht wird. Weitere Informationen finden Sie unter Concurrency Runtime.

Viele Programmierszenarien bei Windows erfordern zudem das Windows SDK, in dem die Headerdateien enthalten sind, die den Zugriff auf Komponenten des Windows-Betriebssystems ermöglichen. Standardmäßig installiert Visual Studio das Windows SDK als Komponente der C++-Desktoparbeitsauslastung, die die Entwicklung universeller Windows-Apps ermöglicht. Zum Entwickeln von UWP-Apps benötigen Sie eine Windows 10-Version (oder höher) des Windows SDK.

  • Weitere Informationen und einen Downloadlink finden Sie unter Windows SDK.
  • Weitere Informationen zu Windows SDKs für frühere Versionen finden Sie unter Windows SDK-Archiv.

Der Standardspeicherort für alle Versionen des Windows SDK, das Sie installieren, ist: Program Files (x86)\Windows Kits.

Entwicklungstools

Visual Studio bietet einen leistungsfähigen Debugger für nativen Code, Tools für statische Analyse, Grafikdebugtools, einen umfassenden Code-Editor, Unterstützung für Komponententests und viele weitere Tools und Hilfsprogramme.

In diesem Abschnitt

Verknüpfung Beschreibung
Exemplarische Vorgehensweise: Erstellen von Windows-Desktopanwendungen (C++) Erstellen Sie eine native Windows-Desktopanwendung.
Verwenden des Windows SDK in einer Windows-Desktopanwendung Enthält Schritte zum Einrichten Ihres Projekts für das Erstellen mit dem Windows SDK.
Exemplarische Vorgehensweise: Erstellen eines C++-Standardprogramms Erstellen Sie eine Windows-Konsolenanwendung.
Exemplarische Vorgehensweise: Erstellen eines Konsolenrechners in C++ Erstellen Sie eine einfache Windows-Konsolenanwendung. Eine Win32- oder Win64-Konsolenanwendung hat kein eigenes Fenster und keine Meldungsschleife. Sie wird im Konsolenfenster ausgeführt. Eingaben und Ausgaben werden von der Befehlszeile behandelt.
Bereitstellen nativer Desktopanwendungen Bereitstellen systemeigener Anwendungen unter Windows.
Exemplarische Vorgehensweise: Erstellen und Verwenden einer statischen Bibliothek Erstellen einer .lib Binärdatei.
Windows-Desktopassistent Verwenden Sie den Assistenten, um neue Windows-Projekte zu erstellen.
Active Template Library (ATL) Verwenden Sie die ATL-Bibliothek, um COM-Komponenten in C++ zu erstellen.
Freigegebene ATL- und MFC-Klassen Verwenden Sie Klassen, z. B. CString, die in ATL und MFC freigegeben sind.
Microsoft Foundation Classes (MFC) Verwenden von MFC zum Erstellen großer oder kleiner Windows-Anwendungen mit Dialogfeldern und Steuerelementen
Datenzugriff OLE DB und ODBC
Text und Zeichenfolgen Verschiedene Zeichenfolgentypen unter Windows.
Arbeiten mit Ressourcendateien Hinzufügen von Bildern, Symbolen, Zeichenfolgentabellen und anderen Ressourcen zu einer Desktopanwendung
Ressourcen zum Erstellen eines Spiels mit DirectX (C++) Links zu Inhalten zum Erstellen von Spielen in C++.
Titel Beschreibung
Windows-Entwicklung Enthält Informationen zur Windows-API und COM. (Einige Windows-APIs und Drittanbieter-DLLs werden als COM-Objekte implementiert).
Hilo: Entwickeln von C++-Anwendungen für Windows 7 Beschreibt, wie Sie eine vielseitige Windows-Desktopanwendung erstellen, die Windows-Animationen und Direct2D verwendet, um eine karussellbasierte Benutzeroberfläche zu erstellen. Dieses Lernprogramm wurde seit Windows 7 nicht aktualisiert, bietet aber dennoch eine gründliche Einführung in die Win32-Programmierung.
.NET-Entwicklung mit C++/CLI Erstellen Sie Wrapper für systemeigene C++-Bibliotheken, die die Kommunikation mit .NET-Anwendungen und -Komponenten ermöglichen.
Komponentenerweiterungen für .NET und UWP Referenz für Syntaxelemente, die von C++/CX und C++/CLI gemeinsam verwendet werden.
Universelle Windows-Apps (C++) Schreiben von UWP-Anwendungen mit C++/CX oder der Windows Runtime Template Library (WRL).
C++-Attribute für COM und .NET Nicht standardmäßige Attribute für die Windows-only-Programmierung mit .NET oder COM.

Weitere Informationen

C++ in Visual Studio