Hallo Carsten,
Nein, die Bekanntschaft mit C++ war sicher nicht nutzlos. Aber für mich persönlich eine Sackgasse. Ich könnte in der Richtung wieder anknüpfen, wenn es sich so ergibt, würde es aber freiwillig nicht tun.
Das ist für mich als Quereinsteiger natürlich nicht gerade motivierend.
Du solltest Dich nie ausschließlich von einer einzigen Meinung allein (positiv oder negativ) beeinflussen lassen, sondern immer das Gesamtbild betrachten.
Ich persönlich finde C++ ganz nett, allerdings ist die Sprache sehr mächtig und man kann viel falsch machen. Man sollte sich daher ein einigermaßen aktuelles und gutes (!) Buch suchen, das modernes C++ erklärt, wenn man es lernen will - und sich eben nicht zum Ziel setzen, die *ganze* Sprache zu verstehen, sondern erst einmal nur das, was man braucht. Im Gegensatz zu z.B. PHP, wo man zumindest die Sprachfeatures selbst relativ schnell alle gelernt haben kann. (Mit Sprachfeature meine ich Verhalten der Sprache selbst, nicht irgendwelche Funktionen o.ä., was standardmäßig mitkommt.)
Es gab übrigens erst kürzlichen einen netten Webcomic, der schön illustriert, was es heißt, C++ "komplett" zu lernen. ;-)
Mein Problem, um an die Programmiererei für Windows (oder mit Fenstern allgemein) anknüpfen zu können, sind halt die fehlenden Vorkenntnisse.
Ich dachte mit C++ kann ich sie mir optimal erwerben.
Nein, das hat mit C++ nichts zu tun. Man kann in sehr vielen Programmiersprachen Programme mit Fenstern programmieren. Das einzige, was man da in der Regel gemein hat, ist, dass man da irgend eine Art von "Objektorientierung" hat, d.h. Dinge wie ein Fenster sind Objekte [1], die man irgendwie manipuliert. Das kann man in verschiedensten Programmiersprachen umsetzen. C++ ist dafür besonders geeignet, weil Objektorientierung in der Sprache selbst enthalten ist - aber in C kann man das genauso machen, dann ist halt die Objektorientierung "manuell" nachimplementiert.
Was für das Programmieren von GUIs viel wichtiger ist, ist in meinen Augen das korrekte Toolkit, mit dem man die GUIs letztendlich erstellt, d.h. die Funktionen, die man aufruft, um letztendlich an das Fenster zu kommen. Es gibt da verschiedene Dinge - von Microsoft gibt's z.B. unter .NET Windows.Forms, von Apple gibt's Cocoa und es gibt plattformübergreifende Toolkits wie GTK und Qt - und viele mehr. Diese Toolkits sind alle am besten aus einer konkreten Sprache ansprechbar (meist in der, in der sie selbst geschrieben sind), bei Windows.Forms wäre das C#, bei Cocoa wäre das Objective-C, bei GTK wäre das C und bei Qt wäre das C++. Das heißt aber nicht, dass die nicht aus anderen Sprachen auch nutzbar sind: Qt kann man auch von Python aus nutzen, GTK von C++ aus, Windows.Forms von VB.Net aus.
Daher: Wenn Du GUI-Entwicklung lernen willst, musst Du vor allem die Konzepte lernen, auf denen GUI-Toolkits aufgebaut sind. Es gibt etliche grundlegende Dinge, die bei fast allen Toolkits identisch sind (das Event-Loop z.B.), es gibt andere Dinge, in denen sie sich dann wieder unterscheiden. Die Programmiersprache an sich ist dann gar nicht mehr so extrem wichtig.
Meine persönliche Empfehlung für ein geeignetes Toolkit wäre Qt. Das API ist in meinen Augen sehr gut designed, die Dokumentation ist in meinen Augen hervorragend und es kommt mit einem Startpaket mit (http://qt.nokia.com/downloads -> Qt SDK), das sowohl das Toolkit selbst als auch eine schlange IDE enthält, mit der man mit der Entwicklung beginnen kann. Qt selbst ist in C++ geschrieben, d.h. es wäre empfehlenswert, wenn Du Dir vorher ein paar C++-Grundlagen (ohne GUI-Zeug) aneignest, bevor Du dann mit der GUI-Programmierung loslegst.
Aber Vorsicht: Ich wette, es gibt viele Leute hier, die Dir etwas völlig anderes empfehlen würden. ;-)
[1] Das gilt selbst für das Windows-API - da gibt's halt kein direktes Objekt sondern einen HWND-Zeiger und lauter API-Funktionen zum Manipulieren desselben.
Viele Grüße,
Christian
Mein "Weblog" [RSS]
Using XSLT to create JSON output (Saxon-B 9.0 for Java)
How to tell the difference between a science fan and a scientist.