WM_PAINT bei vergrößern da, wieso nicht bei verkleinern?



  • Hi!

    Ich hab grad ein Programm, das einfach nur ein Rechteck zeichnet, das ertwas kleiner als der Client bereich ist, wenn ich das Fenster größer ziehe, wird die WM_PAINT Nachricht gesendet, wenn ich das etwas kleiner mache nicht, wieso, bzw. wie kann ich das verhindern? (Habs mit Spy++ überprüft, wird wirklich nicht gesendet)



  • Zeig doch deinen Code.



  • WM_SIZE



  • Dürfte eigentlich nicht nötig sein.



  • um sicher zu gehen das WM_PAINT gesendet wird macht doch WM_SIZE + UpdateWindow();



  • miller_m schrieb:

    um sicher zu gehen das WM_PAINT gesendet wird macht doch WM_SIZE + UpdateWindow();

    Warum so kompliziert? WNDCLASS und WNDCLASSEX kennen die Styles CS_HREDRAW und CS_VREDRAW. Wenn die gesetzt sind, wird bei jedem WM_SIZE ein WM_PAINT hinterhergeschickt (vorher wird das Fenster noch mit der Hintergrundfarbe eingefärbt).



  • cd9000 schrieb:

    Warum so kompliziert? WNDCLASS und WNDCLASSEX kennen die Styles CS_HREDRAW und CS_VREDRAW. Wenn die gesetzt sind, wird bei jedem WM_SIZE ein WM_PAINT hinterhergeschickt (vorher wird das Fenster noch mit der Hintergrundfarbe eingefärbt).

    jetzt wo du es sagst, deine lösung ist wesentlich besser und auch richtiger. hab einfach das erste geschrieben was mir eingefallen ist 😃



  • Kann mir jemand mal den Unterschied zwischen WNDCLASS und WNDCLASSEX erklaeren?



  • Du solltest lieber lernen das selbst nachzulesen. Das ist in der MSDN beschrieben.



  • Ja, das habe ich gemacht, bevor ich gepostet habe. Ich habe nur Probleme das ganze zu verstehen. Vielleicht liegt es daran, dass ich erst seit 2 Stunden Windows-API programmiere. Jedenfalls frage ich mich, warum cbSize und hIconSm nicht mit in der normalen WNDCLASS mit drinnen sind. Hat das irgendwelche Nachteile?



  • Naja, zu Windows 3.1 Zeiten hat Microsoft wohl nicht daran gedacht dass man evtl. nen kleines icon gebrauchen könnte und hat dann bei späteren Windows-Versionen einfach WNDCLASSEX und RegisterClassEx() eingeführt damit das möglich wurde 😉

    Und um bei weiteren Erweiterungen nich jedesmal noch Funktion (z.B. "RegisterClassEx2()") fuckeln zu müssen, haben sie noch cbSize dabei gepackt, woran sie dann erkennen können welche Version der WNDCLASSEX benutzt wird (wobei sie es wohl seitdem scheinbar eh nicht mehr erweitert haben ;D)


Log in to reply