Background überlagert Buttons
-
Hallo,
habe mir in meiner dialogbasierten Anwendung eine kleine Funktion geschrieben, die mir im Hintergrund einen Farbverlauf erzeugt. Vom Start weg klappt das auch alles super, nur gibt es ein Aktualisierungsproblem, wenn ich ein beliebiges Fenster über die Anwendung ziehe. Dann überlagert der Farbverlauf alle Controls.
Wie umschifft man so etwas am besten? Wo muss ich meine Funktion aufrufen, damit der Fehler nicht mehr auftritt? Habe schon verschiedene Positionen in der OnInit sowie der OnPaint probiert, das ganze war aber nicht von Erfolg gekröntMike
-
Theoretisch sollte es funktionieren, wenn du deine Zeichenfunktion als allererstes in OnPaint aufrufst.
-
Das ist leider nicht die Lösung. Ich kann ja hier mal den Codeschnipsel zeigen, viel ist ja eigentlich nicht dazu:
CDC* Paint = GetDC (); CRect Rect_Paintboard; GetClientRect (&Rect_Paintboard); CPen Pen; double j = (float) Rect_Paintboard.Height ()/256.0; for (int i=0; i<256; i++) { Pen.CreatePen (PS_SOLID, 2, RGB (i, 255, 255)); CPen* OldPen = Paint->SelectObject (&Pen); Paint->MoveTo (0, (int) (i*j)); Paint->LineTo (Rect_Paintboard.Width (), int (i*j)); Paint->SelectObject (OldPen); Pen.DeleteObject (); } ReleaseDC (Paint);
Ist zwar ein bischen umständlich geschrieben, sollte aber für das Problem keine Rolle spielen. Mache gerade meine ersten Schritte mit den MFC, beim genannten Problem hilft mir aber auch meine Literatur nicht weiter.
Mike