Als großer Fan der Bücher von Charles Petzold Code und Das kommentierte Turing Ich bin auf sein Buch gestoßen Windows programmieren die Win32-Programmierung in C lehrt. Ich bin ein Informatikstudent im ersten Studienjahr, der zuerst C gelernt hat, aber ich verwende jetzt C# und .NET für die Windows-Programmierung, daher habe ich mich gefragt, ob Win32 für professionelle Windows-Programme immer noch relevant ist. Wäre es mir als Student, der Windows-Anwendungen programmieren möchte, das wert, die Win32-API in der Tiefe zu lernen, die das Buch abdeckt?
Wie relevant ist die Win32-Programmierung für moderne Fachleute? [closed]
JayLeeRan
Es hängt wirklich von der Art der Anwendungen ab, die Sie entwickeln möchten. Für die meisten Zwecke sind heutzutage C# und .NET vollkommen geeignet. Es gibt jedoch bestimmte Arten von Anwendungen, die so wenig Abhängigkeiten wie möglich benötigen (man denke an Shell-Erweiterungen), die als .NET-Anwendungen nicht praktikabel sind. Für diese benötigen Sie Win32.
Wie immer lohnt es sich, zumindest ein grundlegendes Verständnis von Win32 zu haben, selbst wenn Sie .NET für den größten Teil Ihrer Arbeit verwenden.
AlexDrenea
Ich stimme voll und ganz dem zu, was Joel Spolsky in einem seiner vielen großartigen schreibt Artikel. Ich denke, es ist entscheidend, die unteren Schichten der Maschine zu kennen, um nicht nur qualitativ hochwertigen Code schreiben zu können, sondern auch um Probleme lösen zu können, die unvermeidlich auftreten werden.
Also, JA, es ist wichtig, zumindest die Grundlagen der WIN32-API zu kennen, vielleicht nicht in der Tiefe, aber zumindest zu wissen, dass sie vorhanden ist, an der Basis von allem, was Sie programmieren werden.
-
Die APIs auf höherer Ebene sind ausgereift. “Zumindest wissen, dass es da ist” ist wahrscheinlich ausreichend.
– Dustin Getz
27. Juli 2010 um 15:14 Uhr
ng5000
Es ist sehr relevant, wenn Sie C# unter Windows schreiben. Nicht alle Features von Win32 wurden über die .Net-Bibliotheken verfügbar gemacht. Ein konkretes Beispiel dafür ist die WM_SETREDRAW-Nachrichtentechnik, die ich hier beschreibe: WM_SETREDRAW. Es wird auch zu anderen Zeiten für Probleme mit dem Kontrollfokus benötigt.
Wenn Sie verstehen, wie Win32 und Windows funktionieren, erhalten Sie außerdem ein besseres Verständnis für verschiedene Aspekte von C#/.Net, z. B.:
- Was macht Control.Invoke() eigentlich?
- Was ist der Unterschied zwischen Control.BeginInvoke und Control.Invoke?
- Was bewirkt eigentlich, dass die Ereignisse meines Steuerelements ausgelöst werden, z. B. OnClick usw., und wie kann ich das debuggen?
Das heißt, WPF ändert all dies, und wenn Sie nur .Net 3/3.5-Code schreiben, verliert mein Argument etwas an Relevanz.
Meiner Meinung nach nein. Ich habe es vor langer Zeit gelernt, also müsstest du es nicht!
Ich finde es großartig, dass Sie zuerst C gelernt haben, und ich würde ab und zu C-Programme schreiben, aber ich sehe nicht ein, warum die Win32-API nützlich sein sollte, um sich damit zu beschäftigen. Ehrlich gesagt war es ein großes Durcheinander.
bruceatk
Ich denke, es ist wichtig, die Grundlagen zu lernen. Wenn Sie gerade genug gelernt haben, um ein Fenster mit einigen Feldern, einigen Schaltflächen und einem Menü anzuzeigen. Zeichnen Sie vielleicht etwas in einem separaten Fenster. Es würde Ihnen helfen, die Grundlagen zu lernen, wie Windows wirklich funktioniert. Ich glaube, dass das Verständnis der Nachrichtenschleife und die Erkenntnis, dass fast alles, was Sie sehen, ein Fenster ist, grundlegende Dinge sind, die jeder wissen sollte. Meine Augen wurden wirklich geöffnet, als ich zum ersten Mal erkannte, dass ein Knopf sein eigenes Fenster ist. Es hilft Ihnen dann zu verstehen, dass Funktionen von Dingen durch Senden dieser Windows-Nachrichten ein- und ausgeschaltet werden können. Unterklassifizierung Mit Windows erhalten Sie Zugriff auf Funktionen, die Ihnen in Dingen wie .NET oder VB Classic nicht zur Verfügung stehen, und Sie können die Funktionalität des Fensters verbessern.
Gemeinschaft
Lernen Sie auf jeden Fall die Grundlagen, wie AlexDrenea erwähnt. Während .NET Sie vor vielen Win32-API-Aufrufen schützt. Die Win32-API ist so umfangreich, dass Sie zwangsläufig in Situationen geraten, in denen .NET sie nicht für Sie verpackt hat.
Eine häufige Situation im wirklichen Leben, in der Pfeile in ListViewColumns sortiert werden
Anders Sandvig
Ich glaube nicht wirklich, dass das “Lernen der Win32-API” für irgendjemanden realistisch ist. Die APIs (ja, es gibt mehr als eine) sind riesig, und Sie werden sie kaum jemals alle im Detail kennen müssen. Ich würde empfehlen, sich über einige Grundlagen zu informieren (dh Fenstererstellung, Fensternachrichten, Fensterprozeduren, vielleicht etwas GDI usw.) und MSDN zu verwenden, um den Rest nachzuschlagen, wann immer Sie ihn brauchen.
-
Ich stimme zu. Sogar Leute, die vollständige Win32-Apps geschrieben haben, wussten das Ganze nicht. Ich glaube, ich habe damals bei Petzold alles ausprobiert. Aber ich erinnere mich nur an die Teile, die ich mehr als einmal benutzt habe.
– Nosredna
3. Februar 2009 um 16:23 Uhr
Duplikat dieser Frage: stackoverflow.com/questions/5507/…
– MarkJ
12. März 2009 um 23:03 Uhr