Buch „C++ mit Visual Studio 2022 und Windows-Forms Anwendungen“

Das Buch für Windows-Programme mit C++

Ein C++ Buch für Studierende und erfahrene Programmierer, die C++17 mit Visual Studio 2022 lernen und mit C++ Windows Programme mit einer grafischen Oberfläche schreiben wollen.

Für die Übungen kann das kostenlose Visual Studio Communitiy verwendet werden.

Windows Forms Projekte mit C++ basieren auf einer Erweiterung von Visual Studio. Mit der kurzen Anleitung zur Installation dieser Erweiterung und der Verwendung von Windows Forms Projekten können Sie sich einen ersten Eindruck verschaffen.

C++ mit Visual Studio 2022 und Windows Forms Anwendungen - C++17 für studierende und erfahrene Programmierer - Ein Buch von Richard Kaiser

Springer Verlag (ISBN des Hardcovers: 978-3-662-65256-5, ISBN des eBooks: 978-3-662-65257-2)

Vorwort zu „C++ mit Visual Studio 2022 und Windows Forms-Anwendungen“

Der Ausgangspunkt für dieses Buch war der Wunsch nach einem C++ Buch, in dem von Anfang an Programme für eine grafische Windows-Benutzeroberfläche entwickelt werden, und nicht wie meist üblich Konsolen-Anwendungen. Programme, in denen Ein- und Ausgaben über eine Konsole erfolgen, sind für viele Anfänger weltfremd wie steinzeitliche DOS-Programme und schrecken davon ab, sich überhaupt mit C++ beschäftigen zu wollen.

C++ Windows Forms Anwendungen sind ein idealer Rahmen für C++-Programme mit einer attraktiven Benutzeroberfläche: Der Zugriff auf Windows Steuerelemente (Buttons, TextBoxen usw.) ist einfach. Der Unterschied zu einem Standard C++ Programm ist meist nur, dass Ein- und Ausgaben über ein Windows-Steuer-element (meist eine TextBox) erfolgen

textBox1->AppendText("Hello World");

während in Standard-C++ die Konsole mit cout verwendet wird:

cout << "Hello world" << endl;

Aber nicht nur Studierende können von C++ mit einer grafischen Benutzeroberfläche profitieren. Mit Windows Forms Projekten können bestehende C oder C++-Programme ohne großen Aufwand mit einer grafischen Benutzeroberfläche ausgestattet werden. Und wer C oder C++ kann und keine neue Sprache für eine GUI lernen will, kann seine bestehenden Programme mit einfachen Mitteln schöner und leichter bedienbar machen.

C++ hat sich in den letzten Jahren rasant entwickelt: Die Neuerungen von C++11, C++14, und C++17 haben viele Verbesserungen und neue Möglichkeiten gebracht. Vieles, was 2010 noch gut und empfehlenswert war, kann heute besser und sicherer gemacht werden.

Das merkt man als Buchautor und Trainer, der diese ganze Entwicklung begleitet hat, besonders deutlich: Vieles, was man früher einmal geschrieben hat, sollte man heute anders machen. Zwar würde es immer noch kompiliert werden. Aber es ist kein modernes C++ mehr, das dem aktuellen Stand der Technik entspricht und alle Vorteile
nutzt.

Dieses Buch stellt C++ für Windows Forms Anwendungen auf dem Stand von Visual Studio 2022 im März 2022 vor. Das ist der Umfang von C++17.

Dieses Buch entstand einerseits aus meinen Vorlesungen an der Dualen Hochschule Lörrach und andererseits aus zahlreichen Seminaren für Firmen, die sich an Software-Entwickler richten, die C++ professionell einsetzen. Dementsprechend richtet es sich einerseits an Studierende ohne Vorkenntnisse. Die Lernziele für diese Gruppe sind:

  • Modernes C++ auf dem Stand von C++17 zu lernen. C++ ist nach wie vor eine der am häufigsten eingesetzten Programmiersprachen.
  • Programmieren zu lernen, d.h. Programme zu schreiben, die konkrete, vorgegebene Aufgaben lösen. Das ist nur mit viel Übung möglich. Programmieren lernt man nur, indem man es tut. Deshalb enthält dieses Buch auch viele Übungsaufgaben. Es ist unerlässlich, zahlreiche Aufgaben selbständig zu lösen (das müssen nicht die aus diesem Buch sein). Der Schwierigkeitsgrad der Aufgaben reicht von einfachen Wiederholungen des Textes bis zu kleinen Projektchen, die ein gewisses Maß an selbständiger Arbeit erfordern. Lösungen stehen auf www.rkaiser.de als Visual Studio Projekte zum Download bereit.
  • Eine moderne Entwicklungsumgebung kennen- und einsetzen lernen. Visual Studio ist das in der Industrie wohl am häufigsten eingesetzte Werkzeug zur Software-Entwicklung.
  • Man hört immer wieder, dass C++ zu schwierig ist, um damit das Programmieren zu lernen. Dieses Buch soll ein in vielen Jahren erprobtes Gegenargument zu dieser Meinung sein. Damit will ich die Komplexität von C++ nicht abstreiten. Aber wer C++ kann, findet sich leicht mit C#, Java usw. zurecht. Der umgekehrte Weg ist meist schwieriger.

Dieses Buch richtet sich aber ebenso an professionelle Software-Entwickler mit einer jahrelangen C++-Praxis. Viele C++-Neuerungen machen elementare Sprachkonzepte einfacher und sicherer. Dazu kommen anspruchsvollere Neuerungen, die bessere und effizientere Lösungen ermöglichen, die so vor einigen Jahren noch nicht möglich waren. Sowohl die einfachen als auch die anspruchsvolleren Möglichkeiten haben sich in der
industriellen Praxis oft noch nicht herumgesprochen. Oft wird mit C++ noch wie vor 30 Jahren mit C programmiert. Das ist fehleranfällig, unnötig aufwendig und verschenkt Vorteile und Möglichkeiten.

  • Für professionelle Entwickler soll dieses Buch einen nahezu vollständigen Überblick über C++17 geben und die Sprachelemente so vorstellen, dass sie in der praktischen Arbeit eingesetzt werden können. Die Erfahrungen aus meinen Firmenseminaren geben mir die Hoffnung, dass die allermeisten Themen abgedeckt sind, die im industriellen Einsatz notwendig sind.
  • Da fast ausschließlich Standard-C++ behandelt wird, ist dieses Buch nicht auf Visual Studio beschränkt. Praktisch alle Ausführungen gelten für jeden standardkonformen C++-Compiler (gcc, Intel, Embarcadero usw.).
  • – Das moderne C++ bietet auch Programmierern von eingebetteten Anwendungen viele Vorteile gegenüber dem in diesem Anwendungsbereich verbreiteten C. Mit dem modernen C++ gibt es noch weniger Gründe als vorher, solche Anwendungen in C zu schreiben.
  • Professionelle Entwickler sollen sich nicht an den Übungsaufgaben stören. Sie haben schon genügend Aufgaben gemacht, sonst wären sie keine Profis geworden. Und außerdem bietet das Tagesgeschäft genügend Übungsaufgaben.

Ich habe nicht nur versucht, die Sprachelemente anschaulich zu beschreiben, sondern auch Kriterien dafür anzugeben, wann und wie man sie sinnvoll einsetzen kann. Viele Empfehlungen aus style guides sind in den Text eingearbeitet, ohne dass explizit darauf hingewiesen wird.

Die beiden Ausgaben von „C++ mit Visual Studio“


Dieses Buch erscheint in zwei weitgehend identischen Ausgaben:

  • In der vorliegenden Ausgabe werden Programme mit einer grafischen Benutzeroberfläche geschrieben. Alle Ein- und Ausgaben erfolgen über eine Windows-Benutzeroberfläche.
  • In der anderen Ausgabe „C++ mit Visual Studio 2019“ werden reine Standard-C++-Programme geschrieben, d.h. ohne graphische Benutzeroberfläche. Alle Ein- und Ausgaben erfolgen über die Konsole.
  • Der Unterschied zwischen den beiden Ausgaben ist meist nur, dass in „C++ mit Visual Studio 2022 und Windows Forms Anwendungen“ Ein- und Ausgaben über ein Windows-Steuerelement (meist eine TextBox) erfolgen, während in „C++ mit Visual Studio 2019“ die Konsole verwendet wird.
  • Dazu kommen noch etwa 100 Seiten mit unterschiedlichen Inhalten, da diese in Visual Studio nur für den jeweiligen Anwendungstyp verfügbar sind. Die folgenden Themen sind nur in „C++ mit Visual Studio 2019“ enthalten:
    • 15.10 parallele Algorithmen der Standardbibliothek,
    • 2.13 C++ Core Guideline Checks,
    • 11.2 polymorphe Memory Ressourcen (pmr,)
    • Sprachelemente von C++20: 2.14 Module, 14.6 concepts, 4.2.4 std::span, 8.2.5 der dreifache Vergleichsoperator <=> usw.


Dagegen sind diese Themen nur in der Ausgabe für Windows Forms Anwendungen enthalten: „Steuerelemente für die Benutzeroberfläche“ und „C++/CLI, .NET-Bibliotheken und C++ Interoperabilität“. Die vorliegende Ausgabe unterscheidet sich von der Ausgabe für Visual Studio 2019 nur durch einige kleinere Ergänzungen, Korrekturen und das Kapitel über Multithreading. Die Ausgabe für Visual Studio 2019 ist aber eine umfassende Überarbeitung meiner Bücher über C++ mit Visual Studio 2017.

Obwohl die 2019-er Ausgabe nur 2 Jahre später als die 2017-er Ausgabe erschienen ist, ist über die Hälfte komplett neu:

  • Große Teile, die heute nicht mehr aktuell sind, wurden entfernt. Vieles wurde auf den aktuellen Stand des modernen C++ gebracht. Wichtige Erweiterungen kamen dazu.
  • Eigentlich wollte ich den Umfang wieder auf ca. 800 Seiten begrenzen, um potenzielle Leser nicht schon allein durch das Gewicht und die Fülle des Stoffs abzuschrecken. Das ist mir aber trotz intensivster Bemühungen nicht gelungen.

Anregungen, Korrekturhinweise und Verbesserungsvorschläge sind willkommen. Bitte senden Sie diese an die Mail-Adresse auf meiner Internetseite www.rkaiser.de.
Bei meinen Seminarteilnehmern und Studenten bedanke ich mich für die zahlreichen Anregungen. Dem Team vom Springer-Verlag danke ich für die Unterstützung und Geduld.

Tübingen, im März 2022 Richard Kaiser

Leseproben

Auf der Buchseite des Springer Verlags finden Sie unter „Vorschau“ eine kleine Leseprobe mit den ersten beiden Seiten eines jeden Kapitels.

Visual Studio Erweiterungen (VSIX) für Windows Forms-Anwendungen

Mit den auf marketplace.visualstudio.com über Visual Studio|Erweiterungen|Erweiterungen verwalten frei verfügbaren Erweiterungen von Visual Studio 2022 (VSIX, Visual Studio Extension)

kann man in Visual Studio 2022 Windows Forms Projekte wie in Visual Studio 2019 verwenden.

Im Buch werden gelegentlich die Utilities CppCLR_Utils.h und SimpleUnitTests.h verwendet. Diese sind in der Visual Studio Erweiterung „C++ Windows Forms Project with GUI for VS 2022“ enthalten.

Anleitungen für Windows Forms Anwendungen

Eine deutsche Anleitung zur Installation dieser Erweiterung und der Verwendung von Windows Forms Projekten finden Sie hier.

An English tutorial on how to install this extension and use Windows Forms projects can be found here.

Lösungen zu den Übungsaufgaben als Download

Die Lösungen dzu den Übungsaufgaben stehen als pdf

und als Visual Studio 2022 Projekt (im zip-Format) zur Verfügung

Entpacken Sie diese zip-Datei in das Verzeichnis c:\, damit die internen Dateinamen passen und alle Dateien gefunden werden. Sie können die Dateinamen in Filenames.h aber auch leicht auf andere Verzeichnisse anpassen.