Archiv verlassen und diese Seite im Standarddesign anzeigen : An Programmierer: C++ und MFC: was ist das für ein Müll?
Captain America
2002-06-22, 00:38:45
Ja, ich bin verwöhnt, fellow Coders!
Die erste Sprache die ich gelernt habe, war Java. Interfaces, Swing und Hashtables rocken die Scheisse fett!! Nu dacht ich mir, ich fange an MFC zu lernen, um meine C++ Skills zu verbessern. Aber das ist doch zum KOTZEN!!!!!!!! Wenn ich ein GUI erstellen will, muss ich in Resourcen-Dateien angeben wo welches Element steht, alles ist voll von Markos, gemischte Prozedurale und OPP Technik, BUUUAHHH!!!!!!!!!! Nicht mal getter / setter Methoden, von Flow-Layouts keine Spur! Zum Glück habe ich nur ein 10 € teures Buch gekauft!
Gibt es nicht was anderes, um unter Windows eine GUI zu erstellen, die durchgängig in OOP geschrieben ist, um in C++ so komfortable zu arbeiten wie in Java? Mit Exceptions und getter / setter Methoden, deren Namen sagen was sie machen!
HILFE! :( Sonst werf ich mein C++ Buch weg!!!!
C#, Qt, ... ?
Thowe
2002-06-22, 17:48:14
Mit den Resource-Dateien hast du eigentlich nichts zu tun, die erzeugt der Resource-Editor für dich. Du brauchst nicht mal die Klasse selbst erstellen, wenn du einen Dialog konstruierst, das kann er auch selbst. Resourcen-Symbole werden auch automatisch verwaltet und Objekt-Variablen, Ereignissmethoden und sowas lassen sich bequem mit dem ClassWizard anlegen. Wenn man es einmal verstanden hat und den Umgang etwas gübt hat, dann kann man damit wirklich effektiv arbeiten.
BTW: Java Kiddie :P
Exxtreme
2002-06-22, 17:53:31
Coll. Noch einer, der die MFC zum kotzen findet. Was ich empfehlen kann ist die VCL von Borland. Logisch und durchdacht aufgebaut, ohne irgendwelche mysteriösen Makros, die irgendwelche Klassen irgendwie verbinden. Es gibt dort auch kaum Mischmasch zw. C und C++ usw. sondern durchgehend C++. Ich bin mit der VCL sehr zufrieden.
Gruß
Alex
Thowe
2002-06-22, 17:54:17
BTW: Gutes Forum für Fragen ist das http://www.programmierer-board.de
EDIT: Auf http://www.quellcodes.de/ gibt es auch einiges zu stöbern.
Demirug
2002-06-22, 21:48:43
MFC ist wirklich nicht das ware aber um welten besser als alles von Hand zu machen.
Im Moment bevorzuge ich Windowforms mit C#.
@Exxtreme:
Borland hat es sich bei mir im Bezug auf GUI-API seit der OWL1 nach OWL2 Geschichte entgültig versaut.
Captain America
2002-06-23, 01:13:23
Könntest du ein Beispiel von C# posten, in dem du ein Fenster mit einem Menü erzeugst? Am besten verlierst du auch noch ein paar Worte über C#, ich bin willig auch noch das zu lernen wenn ich damit eine g00te GUI erzeugen kann!
Demirug
2002-06-23, 01:33:01
Ein Tutorial mit vielen Beispielen findest du dort:
http://samples.gotdotnet.com/quickstart/winforms/
oder in deutsch
http://de.gotdotnet.com/quickstart/winforms/
C# ist an C++ angelegt. OOP ist pflicht da es keine Funktionen mehr gibt. Die sonstigen Features der Sprache hängen sehr stark mit dem .NET framework zusammen.
ich werd auch bei c# einsteigen (-> Herdentrieb), nachdem ich bisher ganz gut mit der borland vcl klarkam. Für Borland Sprachen gibts ein paar edle Zusatzkomponenten von Drittherstellern. Besonders hervorzuheben ist da imo Developer Express (www.devexpress.com) mit ihrem ExpressQuantumGrid (diese Datengrids sind einfach top, komplett mit sourcen, kostet aber..). Im letzten Jahr hab ich zwei größere Projekte mit ExpressQuantumGrid (und Crystal Reports) in Delphi programmiert, eine Rechnungsverwaltung für einen Internetprovider und ein Prozessoptimierungsprogramm für Gemeinden oder kleine Firmen. Beides ging recht flüssig von der Hand. Bis auf die üblichen kleinen Zweikämpfe gegen ein paar bugs in den Entwicklertools gabs keine Probleme. Wahrscheinlich steht noch ein delphi-projekt an und danach gehts mit c# weiter.
Demirug: keine Funktionen mehr, nur noch Methoden? Interessant, aber im Grunde ist es fast wurst ob man eine Funktion separat deklariert oder sie als Klassenmethode einbaut, wenn man eh links, rechts, oben und unten mit OOP und klassen hantiert.
CA: für schnelle Erfolge in Sachen GUI gibts eigentlich nichts besseres als Delphi (jedenfalls ist mir nix bequemeres bekannt), wobei ich Delphi eigentlich nicht unbedingt einem Entwickler empfehlen würde, der sich fortbilden will, weil die Nachfrage nach Delphikenntnissen vergleichsweise gering ist. Wenn man sich seine Programmiersprachen selber aussuchen kann, ist Delphi aber eine gute Wahl, besonders für Alltags-Datenbankprogrammierkost auf Clientseite. Ich hab die ADO.Net Dokumentation eben angelesen und finde, dass das Delphi's Datenhandling sehr ähnlich sieht. Die Idee des abstrakten DataSet-Objects jedenfalls könnte bei Borland geklaut sein;)
stefan42
2002-06-25, 11:36:35
C#? Oh je!
Ich war ja schon ziemlich begeistert, als ich die ersten Progrämmchen mit WinForms gesehen habe. Es wäre ja zu schön, ohne zwei Browserfenster gleichzeitig geöffnet zu haben (codeproject & codeguru), eine hübsche GUI bauen zu können.
Aber es ist klar zu erkennen: Die Hauptanstrengung von M$ waren WebServices und ASP.NET. WinForms mussten dann halt auch noch her. Daher wurde ein objektorientierter Wrapper für die Win32 Controls gestrickt. Das funktionert wirklich schön, solange man nichts ernstes vor hat. Einen Button mit selbst gezeichnetem Inhalt kann man echt toll programmieren.
Wenn aber eine wirklich konkurrenzfähige GUI (also auch schöne GUI) herauskommen soll, so kann man die alten Links gleich wieder anwerfen. Wer Menüs oder Toolbars im OfficeXP Stil haben möchte, braucht viel Geld oder noch mehr Zeit zum selber machen (Falls er es überhaupt hinbekommt).
Geschmack gefunden? Falls noch nicht, ist codeproject sicher die beste Quelle zur Abschreckung. Wer meint, er käme nun ohne WM_XYZ Message abfangen aus (weil nun ja objektorientiert), der irrt gewaltig sobald es um Listboxes o.ä. geht.
Demirug
2002-06-25, 12:06:00
Wenn man unter Windows irgendwas will was nicht zu den Standard Controlls gehört muss man immer zeit oder geld dafür haben.
Warum du allerdings Message abfangen willst ist mir nicht ganz klar. Man erkennt zwar nicht immer sofort die .Net Lösung für ein problem aber bisher bin ich immer relative schnell zum Ziel gekommen. Manches ist halt anders was aber IMO nicht schlecht ist wenn man es mal verstanden hat.
stefan42
2002-06-25, 18:51:07
Originally posted by Demirug
...
Warum du allerdings Message abfangen willst ist mir nicht ganz klar.
Schau Dir doch mal http://www.codeproject.com/cs/miscctrl/sortedlistview.asp an (Falls es geht - der Connect ist heute nicht gut).
An diesem Beispiel kann man gut die Schwäche von WinForms erkennen: Die Objektorientierung bleibt auf einem zu niedrigem Level. Das Control, das dort vorgestellt wird, wäre mit Java Swing in ein paar Zeilen und mit ein bisschen Blättern in den javadocs bald erledigt. Und zwar auf direktem Wege. Es ist ja auch nicht so, dass dieses Control besonders ausgefallen wäre.
Für C# brauchts jemanden wie Carlos H. Perez, um so etwas zu erstellen. Und selbst der macht dabei ein paar Bugs. Anderes Beispiel: Es gibt für .NET immer noch kein Open Source TreeList Control. Auch nichts ausgefallenes - aber das wäre wohl ein langer Weg, das zu erstellen. Und überhaupt nicht geradlinig. Man müsste für die Messages alte Win32 Bücher studieren und dann auch noch herausfinden, wie das mit c# zusammenspielt.
WinForms bieten nur ganz wenige Erweiterungmöglichkeit - und genau das ist, was die Objektorientierung eigentlich ermöglichen soll.
Was mich an M$ so ärgert, ist dass dort haufenweise Controls entwickelt werden und nichts davon für andere Entwickler veröffentlicht wird. Wie Office 98 herauskam, durfte jeder die Toolbars nachbauen etc. Was dabei herauskommt sieht man bei Borland: Die Toolsbars haben ein ganz anderes Feeling als die von M$ - klasse!
Demirug
2002-06-26, 07:48:04
@stefan42:
OK das Ownerdraw ist für einige Controls wirklich bescheiden gelöst worden. Das Beispiel das du aufgeführt hast geht allerdings auch einen sehr radikalen weg es geht auch etwas gemäsigter.
Mit Swing hat JAVA ja auch einen zweiten versuch gebraucht. Es besteht also noch Hoffnung:D
Deinen Gedanken wegen der Controls von Offices kann ich nicht ganz folgen. Diese kommen aus der Applicationgroup und die verschenkt nun mal keine Sache. Die meisten anderen Entwickler von Anwendungsprogrammen übrignes auch nicht.
vBulletin®, Copyright ©2000-2025, Jelsoft Enterprises Ltd.