OnPaint() überschreiben
-
Ich muss OnPaint in meiner Klasse ergänzen. Das funktioniert soweit, allerdings wird dann nur "mein" OnPaint() ausgeführt und damit die überschriebene Funktion nicht mehr ausgeführt. Ich habe sowas wie SetMsgHandled( FALSE ); gefunden, damit sollte eigentlich danach noch alles ausgeführt werden, allerdings findet er diese Methode bei mir nicht.
Jemand ne Idee?
-
class Base { virtual OnPaint() { // ne Menge Sachen } }; class Derived { virtual OnPaint() { // noch mehr Sachen // ruf Methode der Basisklasse auf Base::OnPaint(); } };?
Gruss,
DeSoVoDaMu
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum MFC (Visual C++) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
OnPaint kann man so nicht vernünftig überschreiben.
Leider in meinen Augen eines der größten Design-Fehler in Windows.Grund: In WM_PAINT besogt sich der Handler mit BeginPaint den PaintDC. Dieser wird durch EndPaint zurückgesetzt. Wenn man nun ein zweites mal BeginPaint aufruft, dann ist die Clip Region leer. Ruft man nun das Parent auf, hat dieses nicht mehr zu malen!
Die MFC umgeht dies, indem die neue Funktion OnDraw eingeführt wurde...