WndProc() ist sehr, sehr Kern der Art, wie ein Windows-Fenster funktioniert. Es ist eine verwaltete Wrapper-Methode um die Fensterprozedur, eine Funktion, die früher in C geschrieben wurde. Auf diese Weise passen Sie das Verhalten eines Fensters an und reagieren unterschiedlich auf Benachrichtigungen, die vom Betriebssystem oder anderen Programmen generiert werden.
Normalerweise müssen Sie sie nicht überschreiben, da die WndProc() - Methode in der Basisklasse die meisten Basisbenachrichtigungen verarbeitet. Verwandeln Sie sie in freundliche .NET-Ereignisse, wie Klick usw. Aber das ist nicht vollständig, entweder weil die Benachrichtigung zu obskur ist oder nicht, weil sie nichts über die Nachrichten wissen kann, die von einem benutzerdefinierten Fenster verwendet werden. In diesem Fall können Sie auf das Überschreiben von WndProc() zurückgreifen, um die Nachricht abzufangen. Das beste Beispiel, das ich mir vorstellen kann, ist das Erstellen eines randlosen Fensters, um einen benutzerdefinierten Fensterrahmen zu zeichnen und dem Fenster trotzdem ein normales Verhalten zu geben. Am einfachsten durch Abfangen von Nachrichten wie WM_NCHITTEST, nicht von .NET eingepackt.
Wirklich grokking WndProc() erfordert lesen Petzolds bahnbrechendes Buch "Programmierung Windows". Vielleicht ist es heute nicht mehr so einfach zu verstehen, es setzt ein grundlegendes Verständnis der Sprache C voraus. Vor 30 Jahren war die Sprache der Winapi die Sprache, objektorientierte Sprachen waren damals nicht weit verbreitet oder verfügbar. Das erklärt auch, warum das Schreiben von Code innerhalb von WndProc() ziemlich schmerzhaft ist, es gibt sehr wenig Abstraktion und man kann Pointer nicht wirklich ignorieren.
Microsoft hat darum bemühen, es in den Ruhestand, mit Windows 8 und der api WinRT beginnen. Nicht gerade ein Slamdunk-Erfolg, vielleicht wird Windows 10 es etwas antreiben. Die grundlegende Technologie, die WinRT unter die Haube bringt, ist COM, ein großer Schritt von C, weil es ein Objektmodell unterstützen kann. Wenngleich es auch in den freundlichen Sprache Projektionen versteckt, ist COM-Programmierung etwas, die meisten Programmierer versuchen zu vermeiden :)
Diese Frage wurde auf Meta: https://meta.stackoverflow.com/a/295041/3614835 gestellt –