Forum: PC-Programmierung Windows Grafik-Programmierung (GUI) Buch


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Pascal (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,
um vielleicht einmal gut Windows-Programme programmieren zu können, 
würde ich gerne bei den Grundlagen anfangen. In der Eingabeaufforderung 
textbasierte Programme in Python, C, Java,... zu schreiben ist zwar gut 
zum Üben, aber ich würde gerne mal in die Programmierung eines GUIs 
einsteigen. Habt ihr vielleicht Empfehlungen Bücher betreffend? Denn ich 
würde gerne auch die Grundlagen dahinter verstehen und nicht nur 
irgendwas irgendwie aus fertigem Code zusammenschnipseln. Am besten eine 
"traditionelle" Art für das Erzeugen eines GUIs, die selbst auf Windows 
XP noch laufen würde..

Danke!
Pascal

von Tippgeber (Gast)


Bewertung
0 lesenswert
nicht lesenswert
wxWidgets

von bluppdidupp (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Wenn du ein Fenster mal zum Spaß "zu Fuß" direkt via WinAPI erzeugen 
willst:
http://www.winprog.org/tutorial/start.html
http://www.win-api.de/tutorials.php

von Pascal (Gast)


Bewertung
0 lesenswert
nicht lesenswert
bluppdidupp schrieb:
> Wenn du ein Fenster mal zum Spaß "zu Fuß" direkt via WinAPI
> erzeugen willst:
> http://www.winprog.org/tutorial/start.html
> http://www.win-api.de/tutorials.php

Danke! Ein Fenster ist immer ein guter Anfang :-)

von Vincent H. (vinci)


Bewertung
3 lesenswert
nicht lesenswert
Sich die WINAPI anzueignen ist in meinen Augen reine Zeitverschwendung. 
Das ist ungefähr so als würdest du gerne Apps programmieren und fängst 
mit Nokia OS an. GUI Frameworks sind einfach keine Standardbibliotheken. 
Schlimmstenfalls nimmst du dann auch noch Design-Patterns auf die vor 20 
Jahren vielleicht grad aktuell waren...

Ich würd doch zu was modernerem Raten, beispielsweise Qt. Sollte dich 
nach den ersten Schritten tatsächlich noch interessieren "was hinter 
läuft", dann kannst du dir das jederzeit ansehn. In der Praxis ist 
Wissen rund ums Framework aber wesentlich wichtiger als zu wissen wie 
ein Widget das 10. Pixel in der 182 Zeile anspricht. :D

von helluo librorum (Gast)


Bewertung
4 lesenswert
nicht lesenswert
"Klassiker" zur Windows-API:

- Windows-Programmierung, 5. Auflage, Charles Petzold
Hauptsächlich GUI, ist aber ein Klopper. Vorsicht: In der darauf 
folgenden Edition geht es um C# und .NET.

- Microsoft Windows Programmierung für Experten, Jeffrey M. Richter
bzw. etwas neuer "Windows via C/C++", 5. Auflage.
Windows-API generell, nichts/wenig zu GUI-Themen.

Beide alt, aber das meiste, was Win32 betrifft, funktioniert noch immer 
wie darin beschrieben (logisch, sonst würde ältere Software ja unter 
Windows 10 nicht mehr laufen); allerdings kommen "neuere" Erweiterungen 
natürlich nicht darin vor.

- Windows Internals 1, 6. Auflage & Windows Internals 2, 7. Auflage
Ziemlich neu (1 von 2017), sehr detaillierte Beschreibungen von 
Konzepten, aber nichts/wenig zu GUI-Themen.

---

- Windows Programming With C++ (Nitty Gritty), Henning Hansen
bzw. "Windows-Programmierung mit C++"
Hauptsächlich GUI, knapper gefasst als das Buch von Charles Petzold, 
eher eine Art langes Tutorial. Vielleicht nicht schlecht für deine 
Zwecke. Habe ich auch online zum Lesen gefunden, weiß aber nicht, ob das 
Angebot legal ist.

- C++ Windows Programming - Develop real-world applications in Windows, 
2016, Stefan Björnander
Darin geht es hauptsächlich um die Verwendung und teilw. Implementierung 
eines C++-Wrappers um die Windows-API ("Small Windows").
https://github.com/PacktPublishing/Cpp-Windows-Programming

---

> Am besten eine "traditionelle" Art für das Erzeugen eines GUIs, die
> selbst auf Windows XP noch laufen würde..

Ein paar Hintergründe zu kennen, halte ich durchaus für sinnvoll. Die 
Frage ist natürlich, ob heutzutage das Durcharbeiten einer dicken 
Schwarte zu diesem Thema empfehlenswert ist (mal ganz abgesehen davon, 
dass man einige der Bücher nicht mehr bekommt - und wenn doch, dann 
selbst gebraucht vermutlich oft überteuert) ...

Ich würde da eher ein paar Web-Tutorials oder vielleicht noch das kurz 
gehaltene Buch von Henning Hansen empfehlen.

Du musst natürlich beachten, dass in alten Büchern/Tutorials ältere 
Versionen von Visual Studio gezeigt werden, z.B. VS 6.
In den nachfolgenden Express-Versionen war der Ressourcen-Editor nicht 
enthalten (nur ab VS Pro), glaube ich, aber in den neueren 
Community-Versionen von VS ist er dabei. Es gibt aber auch so etwas 
(nicht von "Hacker" irritieren lassen, das ist einfach ein 
Ressourcen-Editor):
http://www.angusj.com/resourcehacker/
Du kannst natürlich auch "stilecht" in Notepad++, Vim o.ä. und der 
Kommandozeile arbeiten. Ohne VS brauchst du zumindest die Build-Tools 
(Compiler, Linker, SDK, ...):
http://landinghub.visualstudio.com/visual-cpp-build-tools

von Dennis H. (c-logic) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Sagt ja keiner das du die Fenster ab CreateWindowEx selbst aufbauen 
musst.

Auch in Windows gibts Resourcenbasierende Dialoge mit CreateDialog, was 
dir die ganzen CreateWindowEx-Aufrufe abnimmt. BitmapResourcen 
inklusive.

ResEdit nehm ich gern dafür.

Windows unterstützt da einiges von Haus aus.

Eigene funktionelle Controls sind möglich.
In DialogBoxen auf Resourcenbasis kannste allerdings auch 
ownerdrawn-Controls benutzen.
Die passenden Nachrichten bringen sie mit.

Setz dich mit dem MessageLoop auseinander. Alles andere haben die 
anderen ja schon anhand von Quellen geliefert.

Und man muss nicht immer ein Framework benutzen.

Gruß Dennis

von Lothar (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Pascal schrieb:
> Programmierung eines GUI

Da braucht es nicht wirklich ein Buch. Wenn man Visual Studio nutzt ist 
es selbsterklärend, die GUI mit dem Visual Basic Forms Editor 
zusammenzuklicken, der Code für die Events wird automatisch erzeugt. 
Tutorials und Beispiele für praktisch alles gibt es online. Wenn es dann 
noch Berechnungen oder Kommunikation gibt, kann man auch mit Basic 
machen, oder eben in C# kommt ja auf das selbe raus:

https://de.wikipedia.org/wiki/Common_Intermediate_Language

von Pascal (Gast)


Bewertung
0 lesenswert
nicht lesenswert
helluo librorum schrieb:
> "Klassiker" zur Windows-API:

Vielen Dank! Genau nach so etwas habe ich gesucht : )

von Pandur S. (jetztnicht)


Bewertung
0 lesenswert
nicht lesenswert
Mit einer modernen GUI Tool, wie Delphi, muss man nur noch 
zusammenclicken. Das sind alle muehsamen Details in Komponenten 
verborgen.

von keen jlaskujel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Lothar schrieb:
> Pascal schrieb:
>> Programmierung eines GUI
>
...Wenn man Visual Studio nutzt ist
> es selbsterklärend, die GUI mit dem Visual Basic Forms Editor
> zusammenzuklicken, der Code für die Events wird automatisch erzeugt.
...

Und wie macht man das? Ein kleines Beispiel wäre gerne gewünscht.

von Pandur S. (jetztnicht)


Bewertung
0 lesenswert
nicht lesenswert
Allenfalls gibt's da was auf Utoob

von Lothar (Gast)


Bewertung
0 lesenswert
nicht lesenswert

von Dirk (Gast)


Bewertung
1 lesenswert
nicht lesenswert

von Md M. (Firma: Potilatormanufaktur) (mdma)


Bewertung
0 lesenswert
nicht lesenswert
keen jlaskujel schrieb:
> Und wie macht man das? Ein kleines Beispiel wäre gerne gewünscht.

Such dir halt irgendwas bei YT raus, z.B. das hier 
https://www.youtube.com/watch?v=tcmmCcMs8yU . Ich bin absoluter 
Microsoft-Hasser, musste damit aber im Studium arbeiten und muss 
zugeben, dass man damit ziemlich gut arbeiten kann.
Ob es auf Windows XP noch läuft weiß ich nicht und ob es "tradionell" 
ist weiß ich auch nicht, aber insbesondere wenn dir Buttons, 
Dropdownmenus, Textboxes und co. nicht reichen, lohnt sich ein Blick auf
https://processing.org/
https://processing.org/reference/libraries/#gui

: Bearbeitet durch User
von Dennis H. (c-logic) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert

von Egon N. (egon2321)


Bewertung
-1 lesenswert
nicht lesenswert
Qt mit C++ ist nett und wäre mein Ansatz, soll es retro werden, dann 
Java.

von Paul H. (powl)


Bewertung
0 lesenswert
nicht lesenswert
Ich würde dir auf jeden Fall empfehlen dich nicht auf alte Technologien 
zu versteifen. Die Welt entwickelt sich immer schneller und du solltest 
deine kostbare Zeit lieber in etwas wertbeständigeres investieren.

Schau dir aktuelle Frameworks an und vergiss Windows XP, das nutzt 
heutzutage kein vorwiegend vernünftiger Mensch mehr. Konzentrier dich 
lieber auf plattformübergreifende Technologien.

https://de.wikipedia.org/wiki/Liste_von_GUI-Bibliotheken

Die Win32-API ist veraltet, wird nicht mehr weiterentwickelt, hat 
begrenzte Möglichkeiten und es ist komplex. Letztendlich willst du mit 
GUI-Programmierung bzw. Programmierung allgemein ja auch mal irgendwann 
produktiv Aufgaben erfüllen und nicht deine Zeit mit veralteten und 
mühsahmen Programmiertechniken vergeuden.

von Dennis H. (c-logic) Benutzerseite


Bewertung
1 lesenswert
nicht lesenswert
Die WinAPI ist nicht veraltet.
Es handelt sich nach wie vor um das Standardprogrammierinterface für 
Windows-Programme.
Das Konzept der Fenster und Nachrichten ist unter Windows nicht obsolet.
Die WinAPI beschränkt sich nicht nur auf Fensterprogrammierung, da wären 
noch noch Betriebssystemfunktionen, Multithreading, Multimediafunktionen 
etc.

von Paul H. (powl)


Bewertung
0 lesenswert
nicht lesenswert
Dennis H. schrieb:
> Es handelt sich nach wie vor um das Standardprogrammierinterface für
> Windows-Programme.
Das ist aber nur die halbe Wahrheit, was ist mit der neuen UWP? Was ist 
mit WPF? Und nur weil es der in Windows eingebaute Standard ist, warum 
soll das der Grund sein, warum man überlegene Technologien nicht nutzen 
sollte?

> Das Konzept der Fenster und Nachrichten ist unter Windows nicht obsolet.
Das Argument, das du hier zu widerlegen versuchst, wurde doch gar nicht 
genannt?

> Die WinAPI beschränkt sich nicht nur auf Fensterprogrammierung, da wären
> noch noch Betriebssystemfunktionen, Multithreading, Multimediafunktionen
> etc.
Ja. Aber auch das ist nicht das Thema. Dem TO ging es nur um 
GUI-Programmierung.


Noch ein weiterer Denkanstoß: Was passiert, wenn MS in ein paar Jahren 
beschließt, ein neues, schlankes OS auf den Markt zu bringen, welches 
nur noch die UWP unterstützt und keine Altlasten mehr mit sich 
herumträgt? Durchaus denkbar.

: Bearbeitet durch User
von Dennis H. (c-logic) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Erfolgskonzepte wie MFC und ATL bestätigen die regelmäßigen Umstürze der 
Programmierschnittstellen in Windows.

GetMessage läuft seit Win16 bis hin zu Win64.

.NET mit seinem Framework ist ein schöner Ansatz der nicht so schnell in 
der Versenkung verschwindet wird. Es basiert aber auf einer VM.

So ein Grafikframework ala Gnome und WPL und wie sie alle heißen ist 
schon angenehm, nur sollte man die grundlegenden Möglichkeiten kennen. 
Manchmal kommt es vor das an so einem Framework der Entwickler das 
Interesse verliert.

von Nase (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Ich möchts mal etwas pragmatisch und überspitzt formulieren:

"Windows-GUI-Programmierung" ist effektiv tot.
Wer sich heute noch ernsthaft mit WinAPI, Ressourceneditor und MFC 
herumschlägt, ist selbst schuld. Kann man natürlich machen, Microsoft 
wird diese Ruinen sicherlich noch die nächsten zehn Jahre mit 
herumschleppen. Machts aber net besser.

Nimm Qt oder Gtkmm oder sonst ein etabliertes Framework und investier 
deine Zeit lieber in sinnvollere Dinge.

von Ivo -. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hi,
auf keinen Fall die WinAPI, da muss man ja allein zum simplen Erzeugen 
eines funktionierendes Fensters Code mit einer Zeilenanzahl im 
dreistelligen Bereich schreiben, überleg mal, wie viele das werden, wenn 
du mal eine "richtige" Anwendung programmierst.
Ich würde auch Qt nehmen, ich verwende es des öfteren hobbymäßig um eine 
GUI für meine Konsolenprogramme zu erstellen, das geht mit Qt ratzfatz.

Gruß Ivo

von Turgut T. (tft)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wie ich lese haben die meisten hier eher Framworks am laufen. Ich selber 
arbeite nicht mit C und co. Daher habe ich diesbezüglich auch keine 
aaaanung. Aber ohne API wissen hast du ja keine Ideen was so alles geht 
und was nicht. Und schlussendlich fussen alle Frameworks auf der API. 
Den es schreibt ja niemand die Funktionen neu. Frameworks machen das 
leben einfacher wenn man weis wie diese Funktionieren. Das anpassen an 
eigenen Ideen und wünsche gestaltet sich dann schon schwieriger. Aber 
wehe es Funktioniert etwas nicht, oder das Framework kommt mit dem 
nächsten Windows Patsch mal wider nicht zurecht.

Also ich bevorzuge die MS API Seite.

https://msdn.microsoft.com/en-us/library/windows/desktop/ff818516(v=vs.85).aspx

dort findest du alles was du brauchst.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.