EnableWindow/ShowWindow in OnPaint



  • Hi zusammen,

    bevor ich es tue wollte ich lieber nachfragen :)... Spricht irgendwas dagegen die Methoden EnableWindow oder ShowWindow in dem OnPaint Ereigniss auszuführen?

    Soweit ich das sehe führt ja das bloße Aurufen dieser Methoden in einer CWnd nicht zu einem Neuzeichnen... deswegen sollte es nicht zu irgendwelchen Problemen kommen oder?

    Vielleicht kann mir jemand helfen 🙂



  • Sinn?



  • Die Frage nach dem Sinn :)... naja ich hab ein Attribut welches das Steuerelement deaktivieren bzw. aktivieren soll (m_bEnabled).

    Ich möchte aber das der Anwender nun einige Änderungen hintereinander an dem Element durchführen kann ohne das es neugezeichnet wird... Die Auswertung der gesetzen Eigenschaften wollte ich dann im OnPaint durchführen (also wenn der Anwender die Redrawmethode der Klasse aufgerufen hat)...

    Ich muss mich außerdem korrigieren:
    - ShowWindow führt natürlich zu einem Neuzeichnen
    - EnableWindow jedoch meines Erachtens nach nicht bzw. nach meinen Tests 🙂


  • Mod

    Doch! Beides müsste zu einem Neuzeichnen führen.

    Allerdings erschließt sich mir nicht der Sinn.
    Wie soll ein User mehrere Änderungen "vor dem Neuzeichnen" abgeben können.

    In OnPaint so etwas zu machen verbietet sich alleine schon aus der Tatsache, dass rekursive Aufrufe kommen und auch das Neuzeichnen selbst gestört werden kann. Immerhin veränderst Du den Zustand, während die Controls neu gezeichnet werden.



  • Hi Martin,

    also bei mir führt das EnableWindow 100% zu keinem Neuzeichnen. Ich hab gerade nochmal ein Testprojekt angelegt in dem ich einfach die Methode EnableWindow aufrufe und dann per TRACE0 im OnPaint etwas ausgebe... aber es wird nichts ausgegeben... bei ShowWindow dagegen wird etwas ausgegeben => EnableWindow ruft kein OnPaint bei einem CWnd auf oder ich mach was falsch :D.

    Also wegen der Rekursion ist schon klar: Deswegen ShowWindow auf keinen Fall verwenden. Aber wenn EnableWindow nicht zu einem Neuzeichnen führt sehe ich, da keine Probleme. Ich verwende außerdem eine KLasse die von CWnd erbt, vielleicht führt CWnd nicht zu einem Neuzeichnen?!

    Ich werds dann irgendwie anders lösen :). Danke für die Hinweise. Trotzdem würde ich gerne wissen warum das EnableWindow bei mir nicht zu einem Neuzeichnen führt *grübel*.


Anmelden zum Antworten