GetColor() funktioniert nicht richtíg

krenzer

Grünschnabel
Hi.

Ich bin gerade dabei ein Spiel zu programmieren. Das funktioniert jetzt auch schon. Jetzt wollte ich noch ein paar funktionen hinzufügen. Zum Beispiel die Hintergrundfarbe ändern.

Dazu benutze ich folgenden Code

Code:
CColorDialog dlg; // Hier wird sie dann beim Aufruf gesetzt
if (IDOK == dlg.DoModal())
{
	color = dlg.GetColor(); 
}

Wenn ich das nun ausführe, dass heißt eine andere Farbe wähle und auf OK klicke, passiert erst mal nicht, wenn ich dann aber auf ein EditControl gehe, wechselt es die Farbe.

Wenn ich das Programm dann da Debugge wo der Pfeil ist

Code:
CColorDialog dlg; // Hier wird sie dann beim Aufruf gesetzt
if (IDOK == dlg.DoModal())
{
-->	color = dlg.GetColor(); 
}

und dann auf Weiter klicke ändert sich die Hintergrundfarbe wie gewünscht.

Kann mir irgendjemand sagen warum das nur beim Debuggen funktioniert?

mfg

krenzer
 

Endurion

Erfahrenes Mitglied
Ich vermute, dein Edit wechselt die Farbe erst, wenn es neu dargestellt wird. Beim Debuggen hast du ja die IDE im Vordergrund, dadurch wird indirekt immer wieder ein Redraw ausgelöst.

Einfach nach color = dlg.GetColor ein InvalidateRect auf die Edit ausführen.
 

krenzer

Grünschnabel
Ich hab das jetzt mal schnell ausporbiert. Wenn ich das programm minimiere und dann wieder aufrufe, ist die farbe geändert.

Nur wie mach ich diese InvalidateRect?

EDIT:

Hat sich erledigt. Hab das jetzt schon hinbekommen.

Vielen Dank für die Hilfe.
 
Zuletzt bearbeitet:

Neue Beiträge