F
hustbaer schrieb:
Fake oder Echt schrieb:
Fake oder Echt schrieb:
Mir fällt außerdem auch kein Member der WNDCLASS/EX-Struktur ein, was sich nachträglich nicht ändern ließe.
Ich kann da jetzt die Antwort drin nicht finden.
Abgesehen davon, dass du die Antwort gegeben hast, kann man sie auch in der MSDN in der Nähe von WNDCLASS/EX finden. Das gehört alles zur Window Class Reference. Hinweise auf Lösungen zu geben, auf die man ohne es zu wissen nicht (einfach) kommen kann, sehe ich ein. Mein Eigenzitat sollte nochmal in Richtung MSDN weisen (nach dem Motto: WNDCLASS/EX-Struktur! Ganz wichtig! Gucken, was man da so zu findet!), das war augenscheinlich nicht deutlich.
hustbaer schrieb:
Jo, das funktioniert schön so lange man WM_CREATE & Co nicht fensterspezifisch behandeln muss.
[...]
Etwas speziell ist dabei z.B. GCL_WNDPROC, da sich Änderungen an der Window-Proc erst beim Erstellen von neuen Fenstern auswirken (GCL_WNDPROC wird beim Erstellen des Fensters nach GWL_WNDPROC kopiert, und danach nur mehr GWL_WNDPROC verwendet).
Set-/Get-/RemoveWindowSubclass sind Helper-Funktionen, die auch genutzt werden sollten. Das hat sogar auch Gründe, man mag es kaum glauben. Ansonsten kann man nämlich:
1. die Fenster Prozedur nur einmal ersetzen,
2. die Subclass nur recht schwer wieder entfernen,
3. nur ineffizient extra Daten zuordnen (user data) und
4. um die nächste Prozedur in der Reihenfolge der Fenster-Prozeduren aufzurufen, genügt es nicht, die Alte zu casten und dann aufzurufen, sondern man muss CallWindowProc aufrufen.
Allerdings ist SetWindowSubclass/usw. erst ab ComCtl32.dll Version 6 (also WinXP aufwärts) verfügbar.