www.mikrocontroller.net

Forum: PC-Programmierung Unterschied MFC und CLR


Autor: Latissimo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leute!

Bitte nicht steinigen, aber als völliger NOOB suche ich nach ner kurzen 
informativen Antwort.
Ich versuche gerade in die Visual C++ Programmierung einzusteigen. So, 
wie ich das verstanden habe, ist die MFC eine Libary, in der die Klassen 
drin sind. Die CLR aber auch, oder hab ich da was in den falschen Hals 
bekommen?

Was ist wofür zu empfehlen?

Danke für Rat...

Autor: A. F. (artur-f) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ich versuche gerade in die Visual C++ Programmierung einzusteigen

Wenn du noch nicht eingestiegen bist, dann steig lieber gleich auf die 
C# Programmierung um. Ich musste einige Male MFC Programme programmieren 
und das war mehr als widerlich. Es sei denn du möchtest eine ganz kleine 
Anwendung wie Taschenrechner erstellen etc. C# ist einfacher und schöner 
zu programmieren.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
C# ist nicht C++.

CLR ist die "common language runtime", weist also auf das .Net-Geraffel 
hin.

C++ für .Net ist kein C++, sondern eine Microsoft-Perversion namens 
"Managed C++".

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
MFC ist schon uralt (laut Wikipedia gibt es sie seit 1992) und wurde
im Lauf der Jahre nur wenig weiterentwickelt. Die beiden Dinge, die
ich am meisten vermisse, sind automatisches Layout und hierarchische
Gruppierung von Dialogelementen.

Für einfache GUIs ist sie in Verbindung mit dem Dialogeditor ganz gut
zu gebrauchen. Sobald die GUIs aber komplexer werden, steigt der
Aufwand schon bei kleinen Änderungen oder Erweiterungen rapide an. Man
ist dann nur noch am Hin- und Herschieben von Dialogelementen,
verliert den Überblick über hunderte von Callback-Funktionen usw.

Die automatische Neuanordnung der Dialogelemente bei Änderung der
Fenstergröße wird so gut wie überhaupt nicht unterstützt (deswegen
gibt es Windows auch kaum Dialogboxen, die in der Größe verändert
werden können).

Kurz: MFC ist der mit Abstand altbackenste Toolkit, der noch in
Gebrauch ist.

Alle anderen mir bekannten GUI-Toolkits (GTK, Qt, die unterschiedli-
chen Java-Toolkits usw.) haben die genannten Nachteile nicht. Auch
beim .NET-Framework soll einen deutlich besseren Toolkit als die MFC
dabei sein, aber da kenne ich mich nicht aus. Ich kann deswegen nicht
sagen, welche Programmiersprachen unterstützt werden, aber wahrschein-
lich sind es nur die spziellen .NET-Sprachen C#, VisualBasic und evtl.
dieser neue C++-ähnliche Verschnitt.

Aber darüber können dir sicher .NET-Programmierer mehr erzählen.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Für Neueinsteiger würde ich die MFC definitiv nicht empfehlen. Die von 
yalu angebrachten Kritikpunkte treffen es ganz gut, dazu kommt die recht 
miese Dokumentation und die steile Lernkurve.

Recht interessant ist das GUI-Toolkit wxWidgets. Das ist auf mehreren 
Plattformen verfügbar und kann mit verschiedenen freien C++-Compilern 
genutzt werden. wxWidgets ist in den Grundkonzepten der MFC ähnlich, 
aber an den Punkten weiterentwickelt, wo es bei der MFC hapert.
Gerade das Dialogmanagement ist ganz erheblich besser.

Dazu gibt es auch nicht-C++-Bindungen wie wxPython.

Das ganze ist frei (im Sinne von GPL etc.); es gibt auch ein Buch von 
Julian Smart darüber (Link: Suchen nach "Julian Smart", habe ich schon 
gelegentlich in anderen Threads erwähnt).

www.wxwidgets.org

Ein GUI-Builder (nicht frei, aber auch nicht allzu teuer) ist 
DialogBlocks von Julian Smart (anthemion.co.uk).

Autor: Sebastian Ulmer (sulmer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab mit Latissimo mal in CLR angefangen die Oberfläche zu 
implementieren. Muss dazu sagen, das dies auch Neuland für mich ist. In 
MFC hab ich etwas wenn auch nicht viel Erfahrung.

C++ Kenntnisse sind bei mir noch vorhanden, allerdings etwas 
eingestaubt^^ Darum wollten wir das auch in C++ machen.

Haben bisher nur die Oberflächen gestaltet, Logik ist noch kaum was 
implementiert. Muss aber sagen mit CLR geht das recht einfach und da die 
Applikation nicht wirklich komplex wird, werden wir wohl in CLR 
weitermachen bzw. mal versuchen die komplette Logik zu implementieren.

Entweder so oder wir steigen morgen doch auf MFC um^^

@yalu: Das mit der Neuordnung bei Veränderung der Dialoggröße nervt mich 
auch ständig, seit ich mit MFC angefangen hab. Hab das dann immer durch 
eine Neuberechnung der Koordinaten gelöst. Umständlich aber wohl die 
einzige Möglichkeit.

Autor: Sebastian Ulmer (sulmer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Rufus: Danke für die Links, schau sie nachher mal daheim in Ruhe an. 
Die Software ist halt für kommerzielle Zwecke daher muss ich bissl 
schaun was ich verwenden kann. Bzw. was wir bereits im Geschäft 
verfügbar haben und das ist glaub nur Microsoft Visual Studio

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.