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
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
"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
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
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
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.
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
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.
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.
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.
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.
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.
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
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.