Warum kann man mit C++ keine GUI erstellen – und wie machen es dann Microsoft, Apple & Co.??

8 Antworten

Eine GUI ist eine extrem komplexe und aufwändige Angelegenheit, das ist zu high-level, um auf direktem Weg unterstützt zu werden. Stattdessen bietet C++ alle möglichen Werkzeuge, um die GUI "zu Fuß" aufzubauen und zu verwalten, C++ soll low-level sein. Das ist auch notwendig, z.B. läuft die GUI-Programmierung unter Windows völlig anders, als unter Linux, oder man rendert komplett selber, das sind also schon min. drei sehr verschiedene Ansätze. Wenn einer dieser Wege direkt implementiert wäre, dann hätte jedes Projekt, das einen anderen Weg gewählt hat, diesen "überflüssigen" Overhead immer mit dabei. Stattdessen ist es von Haus aus gar nicht dabei, aber es gibt Frameworks, die es nachrüsten.

Die ganzen Firmen werden sich für ihre Projekte von diesen Frameworks eins ausgesucht haben und nutzen das. Von Microsoft weiß ich, dass sie es das alles (zumindest für Windows) selber entwickeln (das willst Du nicht ^^), aber auch die haben mehrere Möglichkeiten, z.B. gibt es die Windows-API, die die GUI direkt über Windows implementiert. Microsoft entwickelt aber auch viel mit .NET und dafür gibt es gleich mehrere Frameworks, WinForms nutzt intern die Windows-API, WPF nutzt DirectX, MAUI versucht das zu nutzen, was vorhanden ist, etc. Apple wird das für ihr iOS/MacOS vermutlich genauso machen. Andere Firmen werden vermutlich das nutzen, was es schon gibt.

Die ganzen Tutorials befassen sich nur mit der Konsole, weil die Konsole viel einfacher und somit viel besser für ein Tutorial geeignet ist. Professionelle Arbeit mit mit GUIs ist eben ein fortgeschrittenes Thema, während man die praktisch sofort mit der Konsole arbeiten und alle möglichen Sprach-Funktionen austesten kann.
Außerdem sind viele Tutorials (insbesondere die "massentauglichen" wie z.B. Videotutorials) nicht wirklich gut, sie betrachten die Grundlagen ein Stück weit, hören dann aber irgendwann auf.

C++ ist eine sehr komplexe Sprache, wenn Du einen Einstieg haben willst, kommst Du um ein dickes Buch (oder potentiell mehrere) nicht herum - oder Du wühlst dich 100e Stunden durch Dokus.

Woher ich das weiß:Berufserfahrung – C#.NET Senior Softwareentwickler

LordKing506 
Beitragsersteller
 08.06.2025, 06:55

Was sind zb gute bücher

Palladin007  08.06.2025, 13:50
@LordKing506

Kann ich dir nicht sagen, ich kenne keins.
Ich wollte dir nur die Zusammenhänge erklären, gute Bücher kann ich aber nicht empfehlen.
Du kannst aber mal nach Foren suchen, die sich auf C++ spezialisiert haben und dort nach einem guten Buch fragen, da wirst Du vermutlich am ehesten fündig.

Warum kann man mit C++ keine GUI erstellen (...)?

Diese Aussage ist in der Form falsch. Es gibt so einige Toolkits/Bibliotheken/Frameworks, mit denen man mit C++ grafische Oberflächen zeichnen/erstellen kann.

Warum kann man mit C++ scheinbar keine grafischen Benutzeroberflächen (GUIs) direkt erstellen? (...) warum gibt es in C++ standardmäßig keine GUI-Funktionalität?

Bei C++ liegt der Fokus auf der Entwicklung komplexer, systemnaher und leistungskritischer Software, hat aber auch das Ziel, in dem Sinne portabel zu sein, sodass du den Code für verschiedene Systeme kompilieren und somit lauffähig machen kannst. Wenn dir C++ Mittel zur Abstraktion in die Hand legt, dann sollen sie zu keinen Leistungseinbußen oder Overhead führen.

Eine direkte Einbindung eines UI-Toolkits steht dem entgegen, denn GUI-Komponenten sind in ihrem Aussehen und Verhalten eher betriebsystemspezifisch. Wenn du eine GUI benötigst, solltst du dir die entsprechenden Tools selbst zusammenstellen. Bei C++ möchte man dir nicht die Entscheidung abnehmen, welches Werkzeug sich für deinen Anwendungsfall am besten eignet.

In den meisten Tutorials geht es nur um die Konsole.

Du beziehst dich sicherlich konkret auf Einsteigertutorials, deren Fokus es ist, dir die Sprache selbst näher zu bringen. GUI-Entwicklung ist da natürlich kein großes Thema. Es gehört bereits zur fortgeschrittenen Programmierung.

Wie machen das dann Microsoft, Apple oder andere Softwarefirmen? (...) Welche GUI-Frameworks kommen bei professioneller Software zum Einsatz?

Sie nutzen entweder bestehende Toolkits oder haben eigene Tools für sich entwickelt. Bei Microsoft könnte man an der Stelle die Windows API, WinUI, Windows Forms und WPF (in Kombination mit C++/CLI) oder MFC benennen. Apple hat seine Cocoa API und diverse Toolkits wie AppKit, UIKit, SwiftUI.

Generell kann man häufig auf Qt treffen, manchmal auch auf Dear ImGui, FLTK, wxWidgets oder JUCE (Audiosoftware). Proprietäre Lösungen lassen sich an dieser Stelle natürlich nicht konkret benennen.

Das ging schon vor fast 30 Jahren mit dem Borland C++Builder! Irgendwo im Keller gammeln bestimmt noch die Hunderte Seiten Handbuch herum, wo steht, wie das geht. In den Programmier-Kursen damals hast du schon nach kurzer Zeit gelernt, wie du GUIs programmierst.

Woher ich das weiß:eigene Erfahrung

Hi LordKing506,

das ist eine gute und berechtigte Frage die ich dir gerne beantworte. Viele die C++ verwenden um Programme schreiben benötigen oft keine eingebaute GUI. Damit würden Programme für bestimmte Anwendungsbereiche zu viel Ressourcen und Platz weg nehmen wo es garnicht gebraucht werden.

Viele Firmen haben oft aber auch eine GUI-Bibliotheken/Frameworks und brauchen keine eingebauten GUI und sehen das eher als Last an. Daher wird C++ ohne eigenes integriertes GUI ausgeliefert.

Man kann relativ schnell und effektiv Grafik bzw. GUI-Bibliotheken bzw. Frameworks mit einbinden, ohne abhängig von einem zu sein.

Zu Adobe, Microsoft und Co.

Software von Microsoft und Adobe ist meist sehr hochkomplex aufgebaut. Daher sind auch deren GUI komplex und werden eigens entwickelt für diese Firmen. Daher werden zu meist keine externen GUI-Bibliotheken eingebunden bzw. in einem sehr kleinen Umfang. Das Thema ist sehr komplex um da ins Detail zu gehen.

Meist geschieht die Arbeit mit GUI-Frameworks, weil diese umfangreicher sein können als Bibliotheken.

Woher ich das weiß:Berufserfahrung – Ich bin gelernter Mediengestalter Digital und Print(IHK)

LordKing506 
Beitragsersteller
 09.06.2025, 18:51

Meine nur wie die dass halt so machen da ich zu c++ nichts finden konnte und apple und microsoft ja auch guis haben und wie zb beispiel hat es dann qt gemacht

Auch auf die Konsole kannst du an und für sich nicht einfach zugreifen.

Derartige Funktionalitäten sind betriebssystemspezifisch, daher sind sie meist nicht im Standard enthalten, sondern müssen für jedes Betriebssystem sepziell umgesetzt werden.

Es gibt allerdings teilweise dann doch Standards, die in den C++-Standard übernommen werden, die dann jedes Betriebssystem, dass diesen Standard unterstützt, auch unterstützen muss.
Das geschieht aber nur mit der Zeit und für GUIs ist die Zeit offenbar noch nicht reif.

Welche Tools oder Bibliotheken verwenden sie?

Womöglich Low-Level-Bibliotheken wie OpenGL, Vulkan oder DirectX. Oder Bibliotheken, die speziell für die GUI-Entwicklung gedacht sind.

Glaube Qt wird oft verwendet inzwischen.


LordKing506 
Beitragsersteller
 09.06.2025, 11:48

Wie machen es dann Linux und so und wieso wird es nie erwähnt in tutorials

Destranix  09.06.2025, 13:59
@LordKing506

Betriebssysteme müssen auf Hardwareebene/Treiberebene die Umsetzung implementieren. Vielleicht können sie auch so etwas wie VESA nutzen, aber das eignet sich auch nur begrenzt für Dinge.