Übersicht über Windows-Programmierung in C++Overview of Windows Programming in C++

Es gibt mehrere allgemeine Kategorien von Windows-Anwendungen, die Sie mit C++ erstellen können.There are several broad categories of Windows applications that you can create with C++. Jede verfügt über ein eigenes Programmiermodell und einen Satz von Windows-spezifischen Bibliotheken, aber die C++-Standardbibliothek und c++-Bibliotheken von Drittanbietern können in jedem dieser Bibliotheken verwendet werden.Each has its own programming model and set of Windows-specific libraries, but the C++ standard library and third-party C++ libraries can be used in any of them.

In diesem Abschnitt wird erläutert, wie Sie Visual Studio und die MFC/ATL-Wrapperbibliotheken zum Erstellen von Windows-Programmen verwenden.This section discusses how to use Visual Studio and the MFC/ATL wrapper libraries to create Windows programs. Dokumentation zur Windows-Plattform selbst finden Sie in der Windows-Dokumentation.For documentation on the Windows platform itself, see Windows documentation.

Befehlszeilenanwendungen (Konsole)Command line (console) applications

C++-Konsolenanwendungen werden über die Befehlszeile in einem Konsolenfenster ausgeführt und können nur Textausgabe anzeigen.C++ console applications run from the command line in a console window and can display text output only. Weitere Informationen finden Sie unter Erstellen eines C++-Konsolen-App-Projekts.For more information, see Create a C++ console app project.

Native Desktop-ClientanwendungenNative desktop client applications

Eine systemeigene Desktopclientanwendung ist eine C- oder C++-Fensteranwendung, die die ursprünglichen systemeigenen Windows C-APIs oder COM-APIs (Component Object Model) für den Zugriff auf das Betriebssystem verwendet.A native desktop client application is a C or C++ windowed application that uses the original native Windows C APIs or Component Object Model (COM) APIs to access the operating system. Diese APIs sind selbst meist in C geschrieben. Es gibt mehr als eine Möglichkeit, eine native Desktop-App zu erstellen: Sie können die Win32-APIs direkt mit einer Nachrichtenschleife im C-Stil programmieren, die Betriebssystemereignisse verarbeitet.Those APIs are themselves written mostly in C. There's more than one way to create a native desktop app: You can program using the Win32 APIs directly, using a C-style message loop that processes operating system events. Sie können auch mit Microsoft Foundation Classes (MFC) programmieren, einer leicht objektorientierten C++-Bibliothek, die Win32 umschließt.Or, you can program using Microsoft Foundation Classes (MFC), a lightly object-oriented C++ library that wraps Win32. Keiner der beiden Ansätze gilt im Vergleich zur universellen Windows-Plattform (UWP) als "modern", aber beide werden immer noch vollständig unterstützt und haben heute Millionen von Codezeilen, die auf der Welt ausgeführt werden.Neither approach is considered "modern" compared to the Universal Windows Platform (UWP), but both are still fully supported and have millions of lines of code running in the world today. Eine Win32-Anwendung, die in einem Fenster ausgeführt wird, erfordert, dass der Entwickler explizit mit Windows-Nachrichten innerhalb einer Windows-Prozedurfunktion arbeitet.A Win32 application that runs in a window requires the developer to work explicitly with Windows messages inside a Windows procedure function. Trotz des Namens kann eine Win32-Anwendung als 32-Bit-Binärdatei (x86) oder 64-Bit (x64) kompiliert werden.Despite the name, a Win32 application can be compiled as a 32-bit (x86) or 64-bit (x64) binary. In der Visual Studio-IDE sind die Begriffe x86 und Win32 synonym.In the Visual Studio IDE, the terms x86 and Win32 are synonymous.

Informationen zu den ersten Informationen zur herkömmlichen Windows C++-Programmierung finden Sie unter Erste Schritte mit Win32 und C++.To get started with traditional Windows C++ programming, see Get Started with Win32 and C++. Nachdem Sie sich mit Win32 ausgebessert haben, ist es einfacher, mehr über MFC Desktop Applicationszu erfahren.After you gain some understanding of Win32, it will be easier to learn about MFC Desktop Applications. Ein Beispiel für eine herkömmliche C++-Desktopanwendung, die anspruchsvolle Grafiken verwendet, finden Sie unter Hilo: Entwickeln von C++-Anwendungen für Windows.For an example of a traditional C++ desktop application that uses sophisticated graphics, see Hilo: Developing C++ Applications for Windows.

C++ oder .NET?C++ or .NET?

Im Allgemeinen ist die .NET-Programmierung in C-Code weniger komplex, weniger fehleranfällig und verfügt über eine modernere objektorientierte API als Win32 oder MFC.In general, .NET programming in C# is less complex, less error-prone, and has a more modern object-oriented API than Win32 or MFC. In den meisten Fällen ist seine Leistung mehr als ausreichend.In most cases, its performance is more than adequate. .NET verfügt über die Windows Presentation Foundation (WPF) für umfangreiche Grafiken, und Sie können sowohl Win32 als auch die moderne Windows-Runtime-API verwenden..NET features the Windows Presentation Foundation (WPF) for rich graphics, and you can consume both Win32 and the modern Windows Runtime API. In der Regel empfehlen wir die Verwendung von C++ für Desktopanwendungen, wenn Sie:As a general rule, we recommend using C++ for desktop applications when you require:

  • präzise Steuerung der Speichernutzungprecise control over memory usage
  • die höchste Wirtschaftlichkeit beim Stromverbrauchthe utmost economy in power consumption
  • Nutzung der GPU für allgemeines Computingusage of the GPU for general computing
  • Zugriff auf DirectXaccess to DirectX
  • starker Einsatz von Standard-C++-Bibliothekenheavy usage of standard C++ libraries

Es ist auch möglich, die Leistung und Effizienz von C++ mit .NET-Programmierung zu kombinieren.It's also possible to combine the power and efficiency of C++ with .NET programming. Sie können eine Benutzeroberfläche in C- erstellen und C++/CLI verwenden, um die Anwendung in die Nutzung systemeigener C++-Bibliotheken zu versetzen.You can create a user interface in C# and use C++/CLI to enable the application to consume native C++ libraries. Weitere Informationen finden Sie unter .NET Programming mit C++/CLI.For more information, see .NET Programming with C++/CLI.

COM-KomponentenCOM Components

Das Component Object Model (COM) ist eine Spezifikation, die es Programmen, die in verschiedenen Sprachen geschrieben sind, ermöglicht, miteinander zu kommunizieren.The Component Object Model (COM) is a specification that enables programs written in different languages to communicate with one another. Viele Windows-Komponenten werden als COM-Objekte implementiert und folgen standardmäßigen COM-Regeln für die Objekterstellung, Schnittstellenermittlung und Objektzerstörung.Many Windows components are implemented as COM objects and follow standard COM rules for object creation, interface discovery, and object destruction. Die Verwendung von COM-Objekten aus C++-Desktopanwendungen ist relativ einfach, das Schreiben eines eigenen COM-Objekts ist jedoch erweitert.Using COM objects from C++ desktop applications is relatively straightforward, but writing your own COM object is more advanced. Die Active Template Library (ATL) stellt Makros und Hilfsfunktionen bereit, die die COM-Entwicklung vereinfachen.The Active Template Library (ATL) provides macros and helper functions that simplify COM development. Weitere Informationen finden Sie unter ATL COM-Desktopkomponenten.For more information, see ATL COM desktop components.

Universelle Windows-Plattform-AppsUniversal Windows Platform apps

Die universelle Windows-Plattform (UWP) ist die moderne Windows-API.The Universal Windows Platform (UWP) is the modern Windows API. UWP-Apps werden auf jedem Windows 10-Gerät ausgeführt, verwenden XAML für die Benutzeroberfläche und sind vollständig berührungslos.UWP apps run on any Windows 10 device, use XAML for the user-interface, and are fully touch-enabled. Weitere Informationen zu UWP finden Sie unter Was ist eine UWP-App (Universelle Windows-Plattform)? und Anleitung zu Windows Universal Apps.For more information about UWP, see What's a Universal Windows Platform (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-Bibliothek (WRL), die auf Standard-C++- und COM-Code basiert.The original C++ support for UWP consisted of (1) C++/CX, a dialect of C++ with syntax extensions, or (2) the Windows Runtime Library (WRL), which is based on standard C++ and COM. Sowohl C++/CX als auch WRL werden weiterhin unterstützt.Both C++/CX and WRL are still supported. Für neue Projekte empfehlen wir C++/WinRT, das vollständig auf Standard-C++ basiert und eine schnellere Leistung bietet.For new projects, we recommend C++/WinRT, which is entirely based on standard C++ and provides faster performance.

Desktop-BrückeDesktop Bridge

In Windows 10 können Sie Ihre vorhandene Desktopanwendung oder Ihr COM-Objekt als UWP-App verpacken und UWP-Features wie Touch oder Aufruf-APIs aus dem modernen Windows-API-Satz hinzufügen.In Windows 10, you can package your existing desktop application or COM object as a UWP app, and add UWP features such as touch, or call APIs from the modern Windows API set. Sie können einer Desktoplösung in Visual Studio auch eine UWP-App hinzufügen und sie in einem einzigen Paket zusammenpacken und Windows-APIs für die Kommunikation zwischen ihnen verwenden.You can also add a UWP app to a desktop solution in Visual Studio, and package them together in a single package and use Windows APIs to communicate between them.

Mit Visual Studio 2017 Version 15.4 und höher können Sie ein Windows-Anwendungspaketprojekt erstellen, um die Paketerstellung Ihrer vorhandenen Desktopanwendung erheblich zu vereinfachen.Visual Studio 2017 version 15.4 and later lets you create a Windows Application Package Project to greatly simplify the work of packaging your existing desktop application. Für registrierungsaufrufe oder APIs, die Ihre Desktopanwendung verwenden kann, gelten einige Einschränkungen.A few restrictions apply to the registry calls or APIs your desktop application can use. 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.However, in many cases you can create alternate code paths to achieve similar functionality while running in an app package. Weitere Informationen finden Sie unter Desktop Bridge.For more information, see Desktop Bridge.

SpieleGames

DirectX-Spiele können auf dem PC oder auf der Xbox ausgeführt werden.DirectX games can run on the PC or Xbox. Weitere Informationen finden Sie unter DirectX Graphics and Gaming.For more information, see DirectX Graphics and Gaming.

SQL Server-DatenbankclientsSQL Server database clients

Verwenden Sie ODBC oder OLE DB, um über systemeigenen Code auf SQL Server-Datenbanken zuzugreifen.To access SQL Server databases from native code, use ODBC or OLE DB. Weitere Informationen finden Sie unter SQL Server Native Client.For more information, see SQL Server Native Client.

Windows-GerätetreiberWindows device drivers

Treiber sind Low-Level-Komponenten, die Daten von Hardwaregeräten für Anwendungen und andere Betriebssystemkomponenten zugänglich machen.Drivers are low-level components that make data from hardware devices accessible to applications and other operating system components. Weitere Informationen finden Sie unter Windows Driver Kit (WDK).For more information, see Windows Driver Kit (WDK).

Windows-DiensteWindows services

Ein Windows-Dienst ist ein Programm, das im Hintergrund mit wenig oder gar keiner Benutzerinteraktion ausgeführt werden kann.A Windows service is a program that can run in the background with little or no user interaction. Diese Programme werden auf UNIX-Systemen als Daemons bezeichnet.These programs are called daemons on UNIX systems. Weitere Informationen finden Sie unter Dienste.For more information, see Services.

SDKs, Bibliotheken und HeaderdateienSDKs, libraries, and header files

Visual Studio enthält die C-Runtime-Bibliothek (CRT), die C++-Standardbibliothek und andere Microsoft-spezifische Bibliotheken.Visual Studio includes the C Runtime Library (CRT), the C++ Standard Library, and other Microsoft-specific libraries. Die meisten Include-Ordner, die Headerdateien für diese Bibliotheken enthalten, befinden sich im Visual Studio-Installationsverzeichnis unter dem Ordner "VC".Most of the include folders that contain header files for these libraries are located in the Visual Studio installation directory under the \VC\ folder. Die Windows- und CRT-Headerdateien befinden sich im Windows SDK-Installationsordner.The Windows and CRT header files are found in the Windows SDK installation folder.

Mit dem Vcpkg-Paket-Manager können Sie bequem Hunderte von Open-Source-Bibliotheken von Drittanbietern für Windows installieren.The Vcpkg package manager lets you conveniently install hundreds of third-party open-source libraries for Windows.

Zu den Microsoft-Bibliotheken gehören:The Microsoft libraries include:

  • 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.Microsoft Foundation Classes (MFC): An object-oriented framework for creating traditional Windows programs—especially enterprise applications—that have rich user interfaces that feature buttons, list boxes, tree views, and other controls. Weitere Informationen finden Sie unter MFC Desktop Applications.For more information, see MFC Desktop Applications.

  • Active Template Library (ATL): Eine leistungsstarke Hilfebibliothek zum Erstellen von COM-Komponenten.Active Template Library (ATL): A powerful helper library for creating COM components. Weitere Informationen finden Sie unter ATL COM Desktop Components.For more information, see ATL COM Desktop Components.

  • C++ AMP (C++ Accelerated Massive Parallelism): Eine Bibliothek, die leistungsstarke allgemeine Computerarbeit auf der GPU ermöglicht.C++ AMP (C++ Accelerated Massive Parallelism): A library that enables high-performance general computational work on the GPU. Weitere Informationen finden Sie unter C++ AMP (C++ Accelerated Massive Parallelism).For more information, see 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.Concurrency Runtime: A library that simplifies the work of parallel and asynchronous programming for multicore and many-core devices. Weitere Informationen finden Sie unter Concurrency Runtime.For more information, see 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.Many Windows programming scenarios also require the Windows SDK, which includes the header files that enable access to the Windows operating system components. Standardmäßig installiert Visual Studio das Windows SDK als Komponente der C++-Desktop-Workload, die die Entwicklung universeller Windows-Apps ermöglicht.By default, Visual Studio installs the Windows SDK as a component of the C++ Desktop workload, which enables development of Universal Windows apps. Zum Entwickeln von UWP-Apps benötigen Sie die Windows 10-Version des Windows SDK.To develop UWP apps, you need the Windows 10 version of the Windows SDK. Weitere Informationen finden Sie unter Windows 10 SDK.For information, see Windows 10 SDK. (Weitere Informationen zu den Windows-SDKs für frühere Versionen von Windows finden Sie im Windows SDK-Archiv).(For more information about the Windows SDKs for earlier versions of Windows, see the Windows SDK archive).

Programmdateien (x86) - Windows Kits ist der Standardspeicherort für alle Versionen des Windows SDK, die Sie installiert haben.Program Files (x86)\Windows Kits is the default location for all versions of the Windows SDK that you've installed.

Für andere Plattformen, wie Xbox und Azure, sind eigene SDKs verfügbar, die sie ggf. installieren müssen.Other platforms such as Xbox and Azure have their own SDKs that you may have to install. Weitere Informationen finden Sie im DirectX-Developer Center sowie im Azure Developer Center.For more information, see the DirectX Developer Center and the Azure Developer Center.

EntwicklungstoolsDevelopment Tools

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.Visual Studio includes a powerful debugger for native code, static analysis tools, graphics debugging tools, a full-featured code editor, support for unit tests, and many other tools and utilities. Weitere Informationen finden Sie unter Erste Schritte mit der Entwicklung mit Visual Studiound Übersicht über die C++-Entwicklung in Visual Studio.For more information, see Get started developing with Visual Studio, and Overview of C++ development in Visual Studio.

In diesem AbschnittIn this section

TitelTitle BESCHREIBUNGDescription
Exemplarische Vorgehensweise: Erstellen eines Standard-C++-ProgrammsWalkthrough: Creating a Standard C++ Program Erstellen Sie eine Windows-Konsolenanwendung.Create a Windows console application.
Exemplarische Vorgehensweise: Erstellen von Windows-Desktopanwendungen (C++)Walkthrough: Creating Windows Desktop Applications (C++) Erstellen Sie eine systemeigene Windows-Desktopanwendung.Create a native Windows desktop application.
Windows Desktop-AssistentWindows Desktop Wizard Verwenden Sie den Assistenten, um neue Windows-Projekte zu erstellen.Use the wizard to create new Windows projects.
Active Template Library (ATL)Active Template Library (ATL) Verwenden Sie die ATL-Bibliothek, um COM-Komponenten in C++ zu erstellen.Use the ATL library to create COM components in C++.
Microsoft Foundation Classes (MFC)Microsoft Foundation Classes (MFC) Verwenden von MFC zum Erstellen großer oder kleiner Windows-Anwendungen mit Dialogfeldern und SteuerelementenUse MFC to create large or small Windows applications with dialogs and controls
FREIGEGEBENe ATL- und MFC-KlassenATL and MFC Shared Classes Verwenden Sie Klassen wie CString, die in ATL und MFC gemeinsam genutzt werden.Use classes such as CString that are shared in ATL and MFC.
DatenzugriffData Access OLE DB und ODBCOLE DB and ODBC
Text und ZeichenfolgenText and Strings Verschiedene Zeichenfolgentypen unter Windows.Various string types on Windows.
Ressourcen zum Erstellen eines Spiels mit DirectXResources for Creating a Game Using DirectX
Gewusst wie: Verwenden des Windows 10-SDKs in einer Windows-DesktopanwendungHow to: Use the Windows 10 SDK in a Windows Desktop Application Windows SDKWindows SDK
Arbeiten mit RessourcendateienWorking with Resource Files Hinzufügen von Bildern, Symbolen, Zeichenfolgentabellen und anderen Ressourcen zu einer Desktopanwendung.How to add images, icons, string tables, and other resources to a desktop application.
Ressourcen zum Erstellen eines Spiels mit DirectX (C++)Resources for Creating a Game Using DirectX (C++) Links zu Inhalten zum Erstellen von Spielen in C++.Links to content for creating games in C++.
Gewusst wie: Verwenden des Windows 10-SDKs in einer Windows-DesktopanwendungHow to: Use the Windows 10 SDK in a Windows Desktop Application Enthält Schritte zum Einrichten Ihres Projekts für das Erstellen mit dem Windows 10-SDK.Contains steps for setting up your project to build using the Windows 10 SDK.
Bereitstellen nativer DesktopanwendungenDeploying Native Desktop Applications Stellen Sie systemeigene Anwendungen unter Windows bereit.Deploy native applications on Windows.
TitelTitle BESCHREIBUNGDescription
C++ in Visual StudioC++ in Visual Studio Übergeordnetes Thema für Visual C++-Entwicklerinhalte.Parent topic for Visual C++ developer content.
.NET Entwicklung mit C++/CLI.NET Development with C++/CLI Erstellen Sie Wrapper für systemeigene C++-Bibliotheken, mit denen Sie mit .NET-Anwendungen und -Komponenten kommunizieren können.Create wrappers for native C++ libraries that enable it to communication with .NET applications and components.
Komponentenerweiterungen für .NET und UWPComponent Extensions for .NET and UWP Referenz für Syntaxelemente, die von C++/CX und C++/CLI gemeinsam genutzt werden.Reference for syntax elements shared by C++/CX and C++/CLI.
Universelle Windows-Apps (C++)Universal Windows Apps (C++) Schreiben Sie UWP-Anwendungen mithilfe von C++/CX oder Windows Runtime Template Library (WRL).Write UWP applications using C++/CX or Windows Runtime Template Library (WRL).
C++-Attribute für COM und .NETC++ Attributes for COM and .NET Nicht standardmäßige Attribute für die reine Windows-Programmierung mit .NET oder COM.Non-standard attributes for Windows-only programming using .NET or COM.