Übersicht über Windows-Programmierung in C++

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

In diesem Abschnitt wird erläutert, wie Sie Visual Studio und die MFC/ATL-Wrapperbibliotheken zum Erstellen von Windows-Programmen verwenden. Dokumentation zur Windows-Plattform selbst finden Sie in der Windows-Dokumentation.

Befehlszeilenanwendungen (Konsolenanwendungen)

C++-Konsolenanwendungen werden über die Befehlszeile in einem Konsolenfenster ausgeführt und können nur Textausgabe anzeigen. Weitere Informationen finden Sie unter Erstellen eines Konsolenrechners in C++.

Native Desktopclientanwendungen

Eine systemeigene Desktopclientanwendung ist eine C- oder C++-Fensteranwendung, die die ursprünglichen systemeigenen Windows-C-APIs oder COM-APIs (Component Object Model) verwendet, um auf das Betriebssystem zuzugreifen. Diese APIs werden selbst hauptsächlich in C geschrieben. Es gibt mehrere Möglichkeiten zum Erstellen einer nativen Desktop-App: Sie können die Win32-APIs direkt mithilfe einer C-Nachrichtenschleife programmieren, die Betriebssystemereignisse verarbeitet. Oder Sie können mit Microsoft Foundation Classes (MFC) programmieren, einer leicht objektorientierten C++-Bibliothek, die Win32 umschließt. Beide Ansätze werden im Vergleich zu den Universelle Windows-Plattform (UWP) als "modern" betrachtet, aber beide werden noch vollständig unterstützt und verfügen heute über Millionen von Codezeilen, die auf der Welt ausgeführt werden. Eine Win32-Anwendung, die in einem Fenster ausgeführt wird, erfordert, dass der Entwickler explizit mit Windows-Nachrichten innerhalb einer Windows-Prozedurfunktion arbeitet. 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.

Informationen zu den ersten Schritten mit der herkömmlichen Windows C++-Programmierung finden Sie unter "Erste Schritte mit Win32" und "C++". Nachdem Sie etwas über Win32 erfahren haben, ist es einfacher, mehr über MFC-Desktopanwendungen zu erfahren. Ein Beispiel für eine herkömmliche C++-Desktopanwendung, die komplexe Grafiken verwendet, finden Sie unter Hilo: Entwickeln von C++-Anwendungen für Windows.

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. Weitere Informationen finden Sie unter .NET Programming with C++/CLI.

COM-Komponenten

Das Component Object Model (COM) ist eine Spezifikation, mit der Programme, die in verschiedenen Sprachen geschrieben wurden, miteinander kommunizieren 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 Aktive Vorlagenbibliothek (ACTIVE Template Library, ATL) stellt Makros und Hilfsfunktionen bereit, die die COM-Entwicklung vereinfachen. Weitere Informationen finden Sie unter ATL COM-Desktopkomponenten.

Universelle Windows-Plattform-Apps

Die Universelle Windows-Plattform (UWP) ist die moderne Windows-API. UWP-Apps werden auf jedem Windows 10- oder Windows 11-Gerät ausgeführt. Sie verwenden XAML für die Benutzeroberfläche und sind vollständig touchfähig. Weitere Informationen zu UWP finden Sie unter What's a Universelle Windows-Plattform (UWP) app? and Guide to Windows Universal Apps.

Die ursprüngliche C++-Unterstützung für UWP bestand aus (1) C++/CX, einem Dialekt von C++ mit Syntaxerweiterungen oder (2) der Windows-Runtime Library (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.

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. Weitere Informationen finden Sie unter Desktop Bridge.

Spiele

DirectX-Spiele können auf dem PC oder auf der Xbox ausgeführt werden. Weitere Informationen finden Sie unter DirectX Graphics and Gaming.

SQL Server-Datenbankclients

Verwenden Sie ODBC oder OLE DB, um über systemeigenen Code auf SQL Server-Datenbanken zuzugreifen. Weitere Informationen finden Sie unter SQL Server Native Client.

Windows-Gerätetreiber

Treiber sind Komponenten auf niedriger Ebene, die Daten von Hardwaregeräten für Anwendungen und andere Betriebssystemkomponenten zugänglich machen. Weitere Informationen finden Sie unter Windows Driver Kit (WDK).

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.

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 enthalten Ordner, die Headerdateien für diese Bibliotheken enthalten, befinden sich im Visual Studio-Installationsverzeichnis unter dem Ordner "\VC\". Die Windows- und CRT-Headerdateien befinden sich im Windows SDK-Installationsordner.

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- oder höher-Version des Windows SDK. Weitere Informationen und einen Downloadlink finden Sie unter Windows SDK. (Weitere Informationen zu den Windows-SDKs für frühere Versionen von Windows finden Sie unter Windows SDK-Archiv).

Programme (x86)\Windows Kits ist der Standardspeicherort für alle Versionen des Windows SDK, das Sie installiert haben.

Andere Plattformen wie Xbox und Azure verfügen über eigene SDKs, die Sie möglicherweise installieren müssen. Weitere Informationen finden Sie im DirectX-Developer Center sowie im Azure Developer Center.

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. Weitere Informationen finden Sie unter "Erste Schritte bei der Entwicklung mit Visual Studio" und "Übersicht über die C++-Entwicklung in Visual Studio".

In diesem Abschnitt

-- --
Exemplarische Vorgehensweise: Erstellen eines C++-Standardprogramms Erstellen Sie eine Windows-Konsolenanwendung.
Exemplarische Vorgehensweise: Erstellen von Windows-Desktopanwendungen (C++) Erstellen Sie eine systemeigene Windows-Desktopanwendung.
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.
Microsoft Foundation Classes (MFC) Verwenden von MFC zum Erstellen großer oder kleiner Windows-Anwendungen mit Dialogfeldern und Steuerelementen
Freigegebene ATL- und MFC-Klassen Verwenden Sie Klassen, z CString . B. die in ATL und MFC freigegeben sind.
Datenzugriff OLE DB und ODBC
Text und Zeichenfolgen Verschiedene Zeichenfolgentypen unter Windows.
Ressourcen zum Erstellen eines Spiels mit DirectX
Working with Resource Files (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++.
Vorgehensweise: Verwenden des Windows SDK in einer Windows-Desktopanwendung Enthält Schritte zum Einrichten Ihres Projekts zum Erstellen mithilfe des Windows SDK.
Bereitstellen nativer Desktopanwendungen Stellen Sie systemeigene Anwendungen unter Windows bereit.
Titel Beschreibung
C++ in Visual Studio Übergeordnetes Thema für Visual C++-Entwicklerinhalte.
.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 Windows-Runtime Vorlagenbibliothek (WRL).
C++-Attribute für COM und .NET Nicht standardmäßige Attribute für die windows-only-Programmierung mit .NET oder COM.