C++ Tutorial Windows GUI

OP #4671605
Lesenswert?

Ich kenne mich mit C für AVRs relativ gut aus und habe ein wenig 
Erfahrung mit Objektorientierte Programmierung in C#.

Mein Ziel ist es ein kleines Programm für einen Laserexposer zu 
schreiben. Dabei sollen Bild-Dateien geladen werden und die einzelnen 
Zeilen per RS232 an den Controller geschickt werden.

Da das Programm auf einer relativ alten Krücke mit WinXP laufen soll und 
ich .Net vermeiden will, halte ich C++ für ein geeignetes Werkzeug.

Kennt jemand ein gutes Tutorial für C++ wo man sich in 
GUI-Programmierung einarbeiten kann?
Gast #4671677
Lesenswert?

M. M. schrieb:
> Kennt jemand ein gutes Tutorial für C++ wo man sich in
> GUI-Programmierung einarbeiten kann?

"C-API pur" würde ich mir heute für eine GUI nicht mehr antun. In deinem 
Fall wäre vielleicht ein leichtgewichtiger Wrapper (z.B. Win32++ oder 
WTL) geeignet.
Gast #4671907
Lesenswert?

M. M. schrieb:
> habe ein wenig
> Erfahrung mit Objektorientierte Programmierung in C#.

Also hast du keine Ahnung von objektorientierter Programmierung.

Qt ist quasi die Standardbibliothek für C++ (wie die glibc für C). Da 
solltest du dich mal einlesen. Es gibt auch genügend Hilfe dazu.
Gast #4671950
Lesenswert?

Qt ist nicht die Standard Bibliothek für C++. Die Standardbibliothek von 
C++ heisst stdlib.

Qt ist ein Framework zur Plattform übergreifenden Entwicklung grafischer 
Anwendungen.

Die Qt Library kann als Alternative oder zusammen mit der stdlib 
verwendet werden. Sie Kapselt die Funktionen des Betriebssystems so, 
dass die Programmierung weitgehend unabhängig vom Betriebssystem ist. Im 
Idealfall kann ein einziger Quelltext sowohl unter Linux, als auch unter 
Windows, Mac-OS, Android und einige weitere Betriebssysteme compiliert 
werden.

Als Beispiel mag man sich meine Demo-App zur Kommunikation mit µC 
anschauen, Screenshots und Download auf der Seite 
http://stefanfrings.de/net_io/index.html

Man kommt allerdings trotz Qt nicht ganz drumherum, das Programm auf 
allen Zielplattformen zu testen und in Details anzupassen. So sehen 
normale Menüs z.B. unter Windows und Linux prima aus, aber auf einem 
Smartphone ziemlich Kacke. Und Geräte mit Touch-Screen haben keine 
rechte Maustaste und kein Drag&Drop. Dafür gibt es dort diverse Gesten, 
die ein gewöhnlicher PC (ohne Touch Screen) wiederum nicht unterstützt.

Weiterhin gehört noch die Entwicklungsumgebung Qt Creator dazu. Man kann 
aber auch Microsoft Visual Studio benutzen. Im Prinzip kann man jede 
beliebige IDE benutzen, mit anderen wird die Einrichtung und Benutzung 
allerdings komplizierter.

Qt Creator eignet sich auch zur Entwicklung von Programmen ohne 
grafische Oberfläche. Ich habe damit z.B. einen Webserver geschrieben.

Ich mag an Qt, dass es in vielerlei Hinsicht wie die Java 
Laufzeitbibliothek funktioniert, aber in "echten" Maschinencode 
compiliert wird - also eben kein Java ist.

>> Erfahrung mit Objektorientierte Programmierung in C#.
> Also hast du keine Ahnung von objektorientierter Programmierung.

Verstehe ich nicht. C# ist definitiv eine Objektorientierte Sprache, und 
zwar wie aus dem Lehrbuch. Objektorientiert geht gar nicht.
#4671972
Lesenswert?

Stefan U. schrieb:
> Qt ist nicht die Standard Bibliothek für C++. Die Standardbibliothek von
> C++ heisst stdlib.

Beim gcc heißt sie libstdc++.

> Qt ist ein Framework zur Plattform übergreifenden Entwicklung grafischer
> Anwendungen.

Wobei man nicht auf grafische Anwendungen beschränkt ist. Man kann die 
graphischen Teile von Qt auch komplett weglassen (also gar nicht erst 
dazulinken) und z.B. einen Server damit programmieren.
Gast #4671981
Lesenswert?

Stefan U. schrieb:

> Verstehe ich nicht. C# ist definitiv eine Objektorientierte Sprache, und
> zwar wie aus dem Lehrbuch. Objektorientiert geht gar nicht.

Richtig. Aber man kann sie auch wie ein Anfänger verwenden. Und dann 
kommt fast rein prozeduraler Code raus. Man merkt dann fast nix von der 
Objektorientierung.

Klar, natürlich werden da eigentlich Methoden von Objekten implementiert 
und natürlich werden darin oft andere Objekte benutzt.

Wirklich objektorientierte Programmierung ist aber doch noch was ganz 
anderes.

So in der Art wird das wohl gemeint gewesen sein.
Gast #4673528
Lesenswert?

>Da das Programm auf einer relativ alten Krücke mit WinXP laufen soll und
>ich .Net vermeiden will, halte ich C++ für ein geeignetes Werkzeug.

Ich finde Java besser. Es ist deutlich einfacher als C++ und läuft auf 
jedem Rechner.
Gast #4673640
Lesenswert?

chris_ schrieb:
>>Da das Programm auf einer relativ alten Krücke mit WinXP laufen
> soll und
>>ich .Net vermeiden will, halte ich C++ für ein geeignetes Werkzeug.
>
> Ich finde Java besser. Es ist deutlich einfacher als C++ und läuft auf
> jedem Rechner.

Echt? Kann ich ein Java Programm als eine einzelne ausführbare Datei 
ausliefern ohne, dass irgendetwas installiert werden muss? In C++ kein 
Problem....
Gast #4675208
Lesenswert?

M. M. schrieb:
> [...] ich .Net vermeiden will [...]

Und genau da liegt das Problem. Eine einfache GUI-Oberfläche ist nur mit 
einem Framework machbar. Willst Du .net nicht, musst Du dafür das 
nächste Framework ins Projekt ziehen, sei es Qt, GTK+, WxWidgets oder 
wie sie alle heißen. Gut, teilweise kann man die benötigten Teile vom 
Framework in die ausführbare Datei mit Linken, aber im Grunde bleibts 
eine Abhängigkeit. Will man sowieso eine Software nur für Windows 
erstellen, dann ist C# mit .net eigentlich eine gute Wahl, funktioniert 
auch unter Windows XP problemlos. Will man keine Abhängigkeit, dann 
bleibt nur der mühsame WinAPI-Weg. Ein reiner Wechsel des Frameworks 
bringt dann wenig, vorallem wenn man schon Erfahrung mit einem hat (Rein 
sportliche Gründe mal ausgenommen ;-) ).
Gast #4689103
Lesenswert?

M. M. schrieb:
> da das Programm auf einer relativ alten Krücke mit WinXP laufen soll

Wenn das auf einer 'alten Krücke' laufen soll, dann kann die 
Programmiersprache nicht alt genug sein.

Nimm die WIN32 API. Lässt sich hervorragend mit dem Visual Studio 
programmieren (in Deinem Fall wohl die Visual Studio 2010 Express 
Edition).

Hier gibt es auch noch einen echt tollen grafischen Editor:
http://www.resedit.net/

Hier ist ein Beispiel dazu, als Grundlage sozusagen (Win32 Demo in C++):
http://ahidlib.com/index.php/free-download

Gruß Pit
Gast #4689194
Lesenswert?

Moin,

Mit was für einem Tempo wird den Deine serielle Schnittstelle befeuert?

Mich deucht, die Wahl der Sprache ist bei deinem Projekt nicht das 
entscheidende. Wenn du schon etwas C# kannst wirst du wahrscheinlich 
damit schnellere Programme schreiben als mit C++

Grüße.

Nachdem den Programm eher so nach Dreizeiler (Achtung Übertreibung) 
klingt sollte es ja nicht so schwer sein mal einen einfachen Prototypen 
z erstellen und zu schauen ob's reicht.

In C++ einzuarbeiten und in QT noch dazu... Viel Spaß das ist ein Riesen 
Brocken und Deine C Kenntnisse sind dabei nicht wirklich hilfreich.

Grüße
Gast #4689230
Lesenswert?

Peter II schrieb:
> Klaus schrieb:
>> Qt ist quasi die Standardbibliothek für C++ (wie die glibc für C).
> bei dir vielleicht.
>
> andere verwenden z.b. wxWidgets.

Jap.

Oder gtkmm.

Oder FLTK, wenn es leichtgewichtig sein soll.

Oder gar mit SDL selber zeichnen.

Möglichkeiten über Möglichkeiten...
Gast #4689561
Lesenswert?

Autor: Rolf Magnus (rmagnus)
>chris_ schrieb:
>> läuft auf jedem Rechner.

>Das wird irgendwie immer gerne behauptet, aber von den Java-Programmen,
>mit denen ich so bisher Kontakt hatte, funktioniert das mit so gut wie
>keinem.

Das ist seltsam, bei mir funktioniert das mit meinen selbst 
geschriebenen Programmen die ganze Zeit. Die Programme laufen alle ohne 
Änderung auf Win, Linux, Mac, RasPi. Mache ich am Ende irgendwas 
richtig?
Gast #4691758
Lesenswert?

> Mache ich am Ende irgendwas richtig?


Ja, du setzt vermutlich nicht voraus, dass ein ein Laufwerk mit Namen 
"C:\" gibt.

Es ist wirklich peinlich, wie viele Java Anwendungen an diesem und 
ähnliche Kleinkram scheitern.
Gast #4692022
Lesenswert?

>Ja, du setzt vermutlich nicht voraus, dass ein ein Laufwerk mit Namen
>"C:\" gibt.
>Es ist wirklich peinlich, wie viele Java Anwendungen an diesem und
>ähnliche Kleinkram scheitern.

Peinlich aber auch das Wissen einiger Foristen.
Wenn oben geschrieben wird, dass die Java Programme auf Win, Mac, Linux 
und RasPi laufen: Wie viel Computerkenntnisse braucht man eigentlich, um 
zu wissen, dass es bei Linux kein c: gibt?
Persönliche Seite #4692095
Lesenswert?

Fred schrieb:
> Peinlich aber auch das Wissen einiger Foristen.
Da sagst du was:

> Wie viel Computerkenntnisse braucht man eigentlich, um
> zu wissen, dass es bei Linux kein c: gibt?
Wenn man ein LW über einen alias mounted, gibt es sehr wohl auch "c" und 
zwar sowohl für linux- als auch Windows-Partitionen. Les- und schreibbar 
:-)

Peter II schrieb:
> andere verwenden z.b. wxWidgets.
Und zwar nicht wenige! Auch ich habe früher viel damit gemacht. 
Besonders nett fand ich den wxDesigner, wo  man die Menüpunkte aus dem 
Programm selbst heraus anlegen und editieren konnte. War das Menü 
fertig, hat man es einfach gespeichert.

http://freecode.com/projects/wxdesigner

Scheint aber nicht mehr gepflegt zu werden.(???)

wxWidgets als solches wird aber noch vorangetrieben, gab erst kürzlich 
ein Release. Früher war das das Einzigste, was es an freien Libs auf dem 
Sektor gab. QT war ja zunächst nicht frei.

Was serielle Programmierung anging, habe ich damals mit der CTB-LIB 
gearbeitet. Auf der Webseite des Entwicklers gibt es auch noch meine 
Doku zum Laden:
https://iftools.com/download/ctb/spmdwx.pdf

Unter Linux waren damals schon 460k an Datenrate drin!
#4692507
Lesenswert?

Stefan U. schrieb:
> Ja, du setzt vermutlich nicht voraus, dass ein ein Laufwerk mit Namen
> "C:\" gibt.

Hat nicht mit Java zu tun, aber passt so gut: Ich bin mir noch nicht 
sicher, ob ich lachen oder weinen soll, wenn ich merke, dass das blöde 
Acrobat-Plugin für Firefox mal wieder in meinem Homeverzeichns eine 
Datei namens "C:\nppdf32Log\debuglog.txt" angelegt hat.

Stefan U. schrieb:
> Es ist wirklich peinlich, wie viele Java Anwendungen an diesem und
> ähnliche Kleinkram scheitern.

Oft scheitert es ja schon daran, dass das Java-Programm in ein 
Installer.exe gesteckt wurde und dann nach der Installation über 
irgendwelche verschlungenen Verkettungen von .bat- und .exe-Files 
gestartet wird.

Mark B. schrieb:
>> Es ist wirklich peinlich, wie viele Java Anwendungen an diesem und
>> ähnliche Kleinkram scheitern.
>
> Dann liegt es freilich an der Dummheit der Programmierer. Nicht an Java
> selbst.

Naja, wenn da fast alle dran scheitern, sagt das auch was über die 
Sprache aus.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren