PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Win32 GUI-Programmierung mit C++


pest
2011-04-13, 09:43:19
Hi :)

für ein Projekt brauche ich diesmal ne grafische Oberfläche.
Da ich normalerweise alles von der Kommandozeile mache reicht mir g++ und Codeblocks.

Vor einiger Zeit habe ich GUI-Sachen mit Delphi gemacht, weil dies recht komfortabel war, und möchte das nun aber auch mit C++ machen.

Welche Möglichkeiten gibt es da?
- die keine zusätzlichen Bibliotheken verwendet
- kein Net

direkte Programmierung durch API-Calls habe ich mal gemacht, aber das ist mir zu aufwändig.

CoconutKing
2011-04-13, 10:27:54
" die keine zusätzlichen Bibliotheken verwendet"

MFC ist auch ne zusätzliche bibliothek, also im prinzip bleibt dir nur reines c++ und ALLES selber proggen.

Trap
2011-04-13, 10:32:21
Hmm, hast du mit deiner Liste an Forderungen irgendwas übriggelassen?

Microsoft selbst sagt WPF (also .NET) oder API. MFC gibt es noch, aber das ist schlimmer als beide Alternativen. Bibliotheken willst du nicht. API auch nicht. Suchst du eine automatische Codegenerierung für API-sachen?

Ich würde wahrscheinlich WPF oder QT nehmen. Oder alternativ einen Server für irgendein dynamisches HTML5-Zeugs in die Anwendung einbauen und den Browser für die GUI benutzen.

Odal
2011-04-13, 10:49:53
ich würde wxWidgets verwenden...ja ist eine zusätzliche Bibliothek aber wie bereits gesagt mfc genauso

Exxtreme
2011-04-13, 11:03:01
Borland C++-Builder oder Microsoft Visual C++ fallen mir auf die Schnelle so ein. Da müsste es ältere Versionen geben ohne .NET.

pest
2011-04-13, 11:17:00
Danke euch,

also mit keine Bibliothek meinte ich extern gebundene, also sieht wxWidgets ziemlich gut aus :)

Shink
2011-04-13, 11:30:37
Borland C++-Builder oder Microsoft Visual C++ fallen mir auf die Schnelle so ein. Da müsste es ältere Versionen geben ohne .NET.
Der gute alte C++-Builder auf Delphi-Basis ist noch immer nicht frei.

einen Server für irgendein dynamisches HTML5-Zeugs in die Anwendung einbauen und den Browser für die GUI benutzen.
Echt jetzt? Für ein natives, lokal laufendes Windows-Programm?:freak:

€Topic: QT-Creator?

Exxtreme
2011-04-13, 11:36:40
Der gute alte C++-Builder auf Delphi-Basis ist noch immer nicht frei.

Steht nicht im Eingangsposting, dass es frei sein muss. ;)

Coda
2011-04-13, 11:54:46
Danke euch,

also mit keine Bibliothek meinte ich extern gebundene, also sieht wxWidgets ziemlich gut aus :)
Aus eigener Erfahrung: Qt ist angenehmer zu verwenden (mein Filter Tester ist wxWidgets), hat aber die LPGL-Einschränkung.

Das größte Problem ist, dass es für wxWidgets keinen offiziellen GUI-Designer gibt, und dass das Event-Handling eher mühselig ist. Letzteres ist bei Qt durch Signals und Slots wesentlich eleganter gelöst.

Aber falsch machen kannst du mit beidem nicht viel. Hauptsache du verwendest kein MFC. Da beginnt der Schmerz ;)

Trap
2011-04-13, 12:01:08
Echt jetzt? Für ein natives, lokal laufendes Windows-Programm?:freak:
Warum nicht? Damit hat man zwangsweise eine sinnvolle Trennung zwischen GUI- und Domain-code, braucht nur Webprogrammierer für die GUI :wink:, kann die Anwendung auch direkt remote nutzen und so weiter.

Es hat natürlich auch Nachteile. Man hat deutliche Einschränkungen bei der GUI-Gestaltung, bei sehr datenintensiven GUIs kann die Serialisierung teuer werden und die Performance bei komplexen interaktiven GUIs ist nicht ganz so gut.

Wenn der Schwerpunkt auf dem Domaincode liegt ist das ein durchaus überlegenswerter Ansatz. http://www.sagemath.org/ wär da ein Beispiel.

Demirug
2011-04-13, 12:58:02
Warum nicht? Damit hat man zwangsweise eine sinnvolle Trennung zwischen GUI- und Domain-code, braucht nur Webprogrammierer für die GUI :wink:

Eigentlich braucht man da ein vernüpftiges GUI Framework (nein jQuery ist kein guter Framework für sowas) für den Browser und UI Programmierer. Sonst füllt es sich nicht wie eine App sondern wie eine Webseite an.

xxxgamerxxx
2011-04-14, 09:02:28
Echt jetzt? Für ein natives, lokal laufendes Windows-Programm?:freak:


Je nach Anwendungsfall ist das durchaus ein gehbarer Weg. Wir haben z.B. eine Anwendung, in der wir für Datenanzeigen und leichte Commands (dropdown, buttons...) das Report Control vom Sql Server in der Windows Forms Anwendung hosten. Die Reports haben zwar keine grafisch aufwendigen Effekte a la WPF/Direct3D, sehen aber trotzdem richtig schick aus. Die Reports werden im ReportControl auch als HTML Webseite dargestellt.

Ist zwar kein Win32, aber sonst würde ich zu WPF oder Silverlight raten (kannst du auch in einer nativen C++ Anwendung hosten). Wenn es ein klassisches Win32 GUI sein muss, kann man meiner Meinung nach auch MFC nehmen. So schlimm finde ich das jetzt nicht.

Exxtreme
2011-04-14, 16:34:55
Also ich finde MFC sind der Terror schlechthin. Da merkt man echt, dass das Ganze organisch gewachsen ist. Hat zwar brauchbar angefangen nur wurde da immer mehr rangeflanscht und rumgepfuscht. Ich würde heutzutage keine MFC-Anwendung mehr schreiben. :D

Und WEB-Oberflächen mit AJAX etc. finde ich persönlich schrecklich. :D Langsam ohne Ende und ich hatte schon auch öfter die Fälle, dass diese dazu neigen irgendwannmal nicht mehr richtig zu funktionieren. Dann hilft nur noch Cache leeren und neu laden.

Gast
2011-04-14, 16:45:06
Qt, mit QtCreator und QtDesigner hat man eigentlich ausgesorgt.

Marscel
2011-04-14, 21:15:42
Wo wir gerade dabei sind: gibts eigentlich überhaupt keine C++-Library, die die Windows-API für Windows, Dialogs und dergleichen einmal sauber kapselt, sodass man den Kram ähnlich wie Windows.Forms, Qt oder wxW, also objektorientiert, verwenden kann?

Ohne dass man komplette Anwendungsframeworks wie Qt oder so ins Projekt holen muss. Also wirklich schlank, sodass man nur mal eben etwas zusammenschustern kann ohne große Dependencies und ohne sich in den ganzen Handle- und Control-Kram der C-WinAPI einzuarbeiten? Davon krieg ich immer Albträume.

Tesseract
2011-04-14, 21:23:31
also mit keine Bibliothek meinte ich extern gebundene, also sieht wxWidgets ziemlich gut aus :)
ich hab wxWidgets noch nicht verwendet, aber ich habe mir sagen lassen, dass es ziemlich grauenhaft sein soll im gegensatz zu z.B. Qt.
Ohne dass man komplette Anwendungsframeworks wie Qt oder so ins Projekt holen muss.
du musst Qt nicht "kompett" verwenden, das ist modular aufgebaut. die teile die du brauchst verwendest du.

Marscel
2011-04-14, 21:43:01
du musst Qt nicht "kompett" verwenden, das ist modular aufgebaut. die teile die du brauchst verwendest du.

Klar. Aber das letzte Mal, da waren QtCore und QtGui zusammen immer noch ~10MB groß. Sorry, ich bin da geringfügig oldschool, was Größe angeht.

Exxtreme
2011-04-14, 21:51:39
Die VCL kann das AFAIK. Diese ist aber ziemlich Ex-Borland-only. ;)

Trap
2011-04-14, 22:00:39
Wo wir gerade dabei sind: gibts eigentlich überhaupt keine C++-Library, die die Windows-API für Windows, Dialogs und dergleichen einmal sauber kapselt
Es gibt http://en.wikipedia.org/wiki/SmartWin%2B%2B, das ist aber wohl schon 3 Jahre tot.

Marscel
2011-04-14, 22:45:13
Es gibt http://en.wikipedia.org/wiki/SmartWin%2B%2B, das ist aber wohl schon 3 Jahre tot.

Cool. Als How-To auf jeden Fall noch brauchbar. :up:

pest
2011-04-15, 05:58:48
habe mir ein paar Tutorials zur direkten API-Programmierung angesehen, und werde das glaube ich (wieder) so machen :freak:

bissl kapseln und gut ist

Odal
2011-04-15, 10:00:40
ich hab wxWidgets noch nicht verwendet, aber ich habe mir sagen lassen, dass es ziemlich grauenhaft sein soll im gegensatz zu z.B. Qt.


inwiefern "ziemlich grauenhaft"?

Tesseract
2011-04-15, 12:27:07
inwiefern "ziemlich grauenhaft"?
schlechter dokumentiert, buggy und teilweise unlogischer aufgebaut.

Marscel
2011-04-15, 12:45:10
schlechter dokumentiert, buggy und teilweise unlogischer aufgebaut.

Das Übliche eben, wenn irgendwo eine Firma hintersteht und das Produkt von kommerziellem Interesse ist, dass die Entwicklung etwas straffer erfolgt als z.B. bei wxWidgets, das eher im offenen oder akademischen Hintergrund entwickelt wird.

ENKORE
2011-04-22, 02:18:18
Ich bin bis jetzt mit der Win32 C API ganz gut durchs Leben gekommen ;)

Exxtreme
2011-04-26, 02:18:50
http://www.pure-native.com/swtcpp/index.html

Ausprobiert habe ich es aber nicht. ;)

Shink
2011-04-26, 08:15:55
http://www.pure-native.com/swtcpp/index.html

Ausprobiert habe ich es aber nicht. ;)
Naja, ich weiß nicht. SWT ist nett aber dafür Geld zahlen?

Ach ja: Wer den guten, alten Delphi 6-Tagen nachweint (RAD mit sehr leichtgewichtigem, performantem Output) sollte mal Lazarus bzw. die Lazarus Component Library ausprobieren. Keine Ahnung ob man die Library auch in C++ verwenden kann - vermutlich schon? Ansonsten könnte man auch den Client per RAD im Lazarus GUI-Builder zusammenbasteln und das C++-Zeug daraus aufrufen.

Exxtreme
2011-04-26, 08:26:29
Naja, ich weiß nicht. SWT ist nett aber dafür Geld zahlen?

Ich glaube, dieses SWT ist kostenlos. Soweit ich das gesehen habe kostet nur dieses "NewJ Library" bei denen etwas.

Shink
2011-04-26, 09:03:06
Ich glaube, dieses SWT ist kostenlos. Soweit ich das gesehen habe kostet nur dieses "NewJ Library" bei denen etwas.
Na dann ist ja alles fein oder wie?:freak:

Note: You need NewJ Desktop for C++ and NewJ Equals C++ before you can use SWT Camp and SWT C++.

Coda
2011-04-26, 10:34:46
Sieht auch ziemlich veraltet aus. Finger weg. Qt gibt's umsonst und ist deutlich besser.

ich hab wxWidgets noch nicht verwendet, aber ich habe mir sagen lassen, dass es ziemlich grauenhaft sein soll im gegensatz zu z.B. Qt.
Das ist stark übertrieben.

Exxtreme
2011-04-26, 10:40:20
Na dann ist ja alles fein oder wie?:freak:
Hehehe, OK. Das habe ich überlesen. :freak:

Gast
2011-11-15, 02:02:46
Das größte Problem ist, dass es für wxWidgets keinen offiziellen GUI-Designer gibt, und dass das Event-Handling eher mühselig ist.
Was verstehst Du unter "offiziellen GUI-Designer"? Auf http://wiki.wxwidgets.org/List_of_Integrated_Development_Environments hast Du eine ganze Liste mit GUI Designern für wxWidgets. (Freeware und kommerzielle Versionen) Probier halt mal alle durch.

kmf
2011-11-15, 08:34:36
Falls Qt infrage kommt, es gibt ein recht gutes Buch mit vielen Beispielen zur GUI Programmierung mit Qt 4, 2. Auflage aus dem Addison-Wesley Verlag von 2009. ISBN 978-3-8273-2729-1, allerding in englisch.

Bei c't gibts gratis ein PDF von der 1. Ausgabe. http://www.qtrac.eu/C++-GUI-Programming-with-Qt-4-1st-ed.zip

Exxtreme
2011-11-15, 09:04:49
Wobei man bei Qt auch aufpassen muss. Qt ist nicht unbedingt Win32 sondern es zeichnet sich selbst, wie z.B. Java Swing auch. Neuere Versionen von Qt sollen zwar auch native GUI-Elemente nutzen können. Nur weiss ich nicht ob das auf Vista/Windows 7 beschränkt ist.