Win-API Kapselungen - welche Lernen?
-
hi
ich hab die letzten Monate damit verbracht C++ zu lernen und ich glaube es wird langsam Zeit, auch Windows-Programmierung zu lernen. die reine WinAPI soll ja recht kompliziert sein und ausserdem reines C ohne OOP. Gibt ja aber genug "Kapselungen" von der API soweit ich weiss...
Was gibts denn fuer welche und was sind die Vorteile der einzelnen? (und wo find ich Einsteigerkurse, Tutorials bzw. oder was fuer Buecher koenntet ihr jeweils dazu empfehlen?)
-
Als Vorteil ist klar die Vereinfachung der Benutzung zu nennen.
Mir fallen jetzt keine Tutorials dazu ein, aber um WinAPI zu lernen sind der Petzold und das 'Windows Programmierung für Experten' von Jeffrey Richter zu empfehlen.
Das Kapseln ist ja im Grunde nur, die Funktionen in schöne Klassen zu packen ...M.T.
-
*g*... hast mich etwas falsch verstanden... ich hab keine Lust die ganzen WinAPI-Funktionen zu lernen. Von einer Kapselung erwart ich mir dass sie ordentlich strukturiert und durch OOP leichter zu bedienen ist.... aber ich weiss nicht welche lernen... MFC, CLX und wie sie alles heissen....
-
lern erstmal die grundlagen der windows programmierung. dann kannst du dich mit wrappern befassen.
denn sonst verstehst du nicht was da abläuft!
danach kannst du dir ja mal wxwindows, qt, gtk(+, mm) ansehen. die sind gratis zu erhalten, was n großer vorteil ist, da du dir für MFC, VCL/CLX und Co ja nen kommerziellen compiler kaufen.
-
lern erstmal die grundlagen der windows programmierung. dann kannst du dich mit wrappern befassen.
denn sonst verstehst du nicht was da abläuft!
muss man das? Also ich kenn mich mit der WinAPI nicht so aus und kann nur von meiner Unix Erfahrung erzählen. Ich hab erst GTKmm programmiert und später direkt X und da hatte ich auch keine Probleme.
-
Original erstellt von kingruedi:
muss man das?nein. du musst nur verstehen was dahinter abläuft.
was passiert bei einem klick auf einen button. wann wird das fenster neu gezeichnet. wie läuft das im hintergrund ab.
ich wette du weißt wie das abläuft, auch ohne dich mit der winapi zu befassen. aber ich wette auch, dass Blue-Tiger es nicht weiß
-
*g*... oki, schon verstanden.... etwas WinAPI muss her...
Aber den ganzen Petzold muss ich doch wohl kaum durchackern oder? *g*... ich fang jetzt mal mit "Visual C++ Kompendium" an, die ersten 200 Seiten sind ueber die WinAPI, denkt ihr das reicht?
und danach klingt wxWindows ganz interessant... THX fuer die Infos
[ Dieser Beitrag wurde am 21.04.2003 um 23:03 Uhr von Blue-Tiger editiert. ]
-
Original erstellt von Blue-Tiger:
**die ersten 200 Seiten sind ueber die WinAPI, denkt ihr das reicht?
**das sollte reichen.
danach solltest du die struktur von windows verstanden haben. notfalls wird dir im WinAPI Forum sicher gerne geholfen.
-
Original erstellt von Shade Of Mine:
notfalls wird dir im WinAPI Forum sicher gerne geholfen.Klar.
Von der MFC kann ich dir aber gleich abraten. Die ist ziemlich sehr nahe an der WinAPI dran und vereinfacht weniges. Da ist die VCL um einiges einfacher (es gibt dazu eine wunderbare Hilfe) und auch strukturierter.
-
Ähm... der Sinn einer Kapselung ist es ja gerade das man sich *nicht* mit dem befasst, was dahinter ist.
Ich weiß ja jetzt nicht, inwiefern Blue-Tiger sich auf die Microsoft-Windows-Materie beschränken will. aber um mit VCL, QT oder Visual Basic ein Fenster zu erstellen, braucht man nicht wissen ob da irgendwo CreateWindowEx() aufgerufen wird.
WinApi (oder ähnliches) sich generell mal anzuschauen, schadet natürlich trotzdem nicht, um das Konzept kennenzulernen. Das wirklich zu programmieren, tut aber meiner Meinung nach nicht not.
-
Doch. Er sollte schon die Grundlagen kennen. Z.B. das Messaging-System sollte man schon kennen, wenn man mit Windows programmiert. Und damit sollte man am Anfang schon ein wenig in kleinen Proggis üben. Ich denke, ne Woche reicht. Dann kann man ja auch mit ner LIB anfangen.
-
Ich hab noch nie die WinAPI gelernt, ist auch sinnlos, wenn man keine Treiber o.ä. coden will.
Ich würde MFC (bei VisualC++ dabei), QT (nicht kostenlos, für freeware jedoch kostenlos) oder GTK+ (kostenlos) lernen, denn die WinAPI ist eine API wie jede andere. Ob man die jetzt kennt oder peng! Schön und gut das man dann vielleicht die Funktionen beim Namen kennt und sich damit brüsten kann, aber helfen tut es einem nichts.
WinAPI kann man nebenbei lernen bzw. man stösst autom. irgendwann darauf.
[ Dieser Beitrag wurde am 23.04.2003 um 12:58 Uhr von Artchi editiert. ]
-
Original erstellt von Shade Of Mine:
danach kannst du dir ja mal wxwindows, qt, gtk(+, mm) ansehen. die sind gratis zu erhalten, was n großer vorteil ist, da du dir für MFC, VCL/CLX und Co ja nen kommerziellen compiler kaufen.QT ist genauso kostenlos wie MFC.
-
Original erstellt von sarfuan:
QT ist genauso kostenlos wie MFC.OK!
sagen wirs so:
wenn man programme erstellen will, dann ist Qt gratis (nicht kommerziell) - MFC aber nicht -> denn der VC++ kostet etwas. Und mit der Autor edition darf man seine programme nicht weiter geben.Oder kennst du eine Möglichkeit ohne VC++ vernünftig MFC zu programmieren??
@all:
es geht mir nicht darum dass man die winAPI können muss - sondern die windows architektur verstehen.beispiel an C++:
wieviele leuten schreiben:
vector<foo> vec;
while(...)
{
vec.insert(vec.begin(), foobar());
}??
viel zu viele.
weil sie nicht wissen was dahinter steckt.
wenn sie wüssten, dass ein vector ein array ist, dann würden sie vec.push_back verwenden...selbes bei windows:
wieviele leute wundern sich warum das wunderschöne gemale nichtmehr da ist, wenn das fenster minimiert und danach wieder maximiert wird? weil sie keine ahung von WM_PAINT haben!wieviele leute wundern sich warum die GUI nichtmehr reagiert, nur weil sie ein
recv() irgendwo stehen haben...
weil sie einfach nicht wissen dass ein fenster die kontrolle wieder an das OS zurück liefern muss bevor die nächste message ankommt...schaut doch mal ins VCL Forum - was dort für fragen manchmal auftauchen... da denkt man sich auch: haben die keine ahnung von C++ und windows??
deshalb denke ich, dass man das system dahinter verstanden haben muss.
sicher, man kann ohne probleme auch gleich wrapper verwenden - aber das fällt einem irgendwann auf den Kopf.
-
hmm, ja, stimmt schon. Aber das sind allgemeine Probleme jedes GUI-Systems.
Ich finde 200 Seiten Petzold lesen und erstmal ordentlich WinApi zu programmieren unangebracht. WinApi ist halt C, und wenn man trotzdem C++ programmieren will, stößt man auf Probleme, bzw. guckt sich von der WinApi Sachen ab, die man in C++ viel schöner hätte machen können. Ich sehe ja was die Leute für Sachen in's C++Forum posten.
-
Wenn ich ein vernünftiges Buch habe, das z.B. die MFC beschreibt, dann steht da auch drin, wie das Fenster upgedated wird - und zwar ohne das man die WinAPI benötigt! Und die paar Defines für die Updates... na, da muß man nun wirklich nicht die WinAPI wälzen. Das steht auch in jedem MFC-Buch drin.
Ich selbst habe mir einen ziemlich umfangreichen 2D-LevelEditor programmiert, ohne das ich WinAPI kann. Aber ich weiß wie ein MFC-Programm an sich funktioniert und aufgebaut ist, das hat aber wenig mit Windows zu tun. Wer MFC, Qt o.ä. lernt, bekommt autom. beigebracht wie das Multitasking funktioniert. Ob das jetzt aber speziell Windows ist, interessiert doch letztendlich nicht? Das ist doch gerade der _Sinn_ eines Wrapper! Es soll mir das Leben vereinfachen, eben nicht wissen zu _müssen_ wie Windows, KDE o.ä. arbeitet.
Was aber nicht heißt, das man sich dafür nicht interessieren soll. Wen es interessiert, kann das ja immer noch genauer erforschen. Aber will das der Fragesteller? Ich denke nicht! Er will sich nicht mit der WinAPI rumschlagen, genauso wenig wie ich. Ich will meine Anwendung programmieren und sie soll am Ende funktionieren. Fertig!
[ Dieser Beitrag wurde am 23.04.2003 um 15:17 Uhr von Artchi editiert. ]
-
Hallo?
hört mir jemand zu?
ich sagte ja: es ist nicht wichtig dass man winAPI kann, sondern dass man versteht was los ist.
bei der MFC wird einem das aufgezwungen - aber zB bei der VCL nicht.
ja sicher, gute bücher erklären die hintergründe - aber viel zuwenig leute lesen bücher. die lesen immer nur tutorials - und da stehts nicht drinnen...
wenn man sagt: lern n bisschen winapi, dann MUSS man sich mit den hintergründen beschäftigen. deshalb schlage ich das immer vor.
denn wenn ich sage: lern mal die hintergründe zu verstehen, dann denken sich viele: pah, graue theorie will ich nicht.
und schon wird die theorie ausser acht gelassen.wenn man aber sagt, programmiere mal nen texteditor in purer winapi, dann ist das interessant und vielleicht auch lustig. aber auf jedenfall beschäftigt man sich dann mit den hintergründen!
-
Original erstellt von Shade Of Mine:
Oder kennst du eine Möglichkeit ohne VC++ vernünftig MFC zu programmieren??Äh, ja. Borland aber der kostet auch Geld. Aber darf ich dich auch was fragen?
Kennst du eine Möglichkeit ohne VC++ vernünftig QT unter Windows zu programmieren??Ich nicht:
The Qt Non Commercial Edition for Microsoft Windows is a binary only distribution requiring Microsoft Visual Studio version 6.
We have no plans to support other compilers
http://www.trolltech.com/download/qt/noncomm.htmlUnd genau auf den Sachverhalt wollte ich mit dem MFC-Verlgeich hinweisen, denn du benötigst sowohl für MFC als auch für QT nunmal den VC++
-
Original erstellt von sarfuan:
Und genau auf den Sachverhalt wollte ich mit dem MFC-Verlgeich hinweisen, denn du benötigst sowohl für MFC als auch für QT nunmal den VC++ich behaupte mal, dass es möglich ist jeden zum VC++ binary kompatiblen compiler dazu zu bringen Qt zu unterstützen.
Ich habs noch nicht probiert, aber zB dmc++ kann MFC Anwendungen kompilieren und ist binary kompatibel zum VC++ - da bekommt man Qt wahrscheinlich zum laufen
-
Bietet Borland denn die MFC an? Ich hab noch nie die IDE von Borland benutzt, kann also hier nur vermuten. Aber MFC ist soweit ich weiß nur von MS direkt erhältlich. Andere Compiler dürften da so ihre Schwierigkeiten haben.