Hintergrundfarbe eines Windows ändern

Hallo,

ich möchte die Hintergrundfarbe eines Fensters zur Laufzeit ändern:

HBRUSH MyBrush = CreateSolidBrush( RGB( 0, 0, 255 ) );
wc.hbrBackground = MyBrush;
gibt zwar zum Start einen blauen Hintergrund, aber wie komme ich zur Laufzeit da dran, um die Hintergrundfarbe zu ändern?

Danke schon mal vorab.

Gruß
Ben

Hallo,

ich habe im Moment leider keinen Zugang um das auszuprobieren, aber ich habe noch ein paar Erinnerungen, die dir vielleicht weiterhelfen.

Du hast eine Callback-Funktion für das Fenster eingerichtet. Hier kannst du das Ereignis WM_PAINT abfangen.

Über das Window-Handle und die Funktion getDC(hwnd) kommst du an das Device, um in das Fenster zu zeichnen.
Über SetBkColor(hdc, color) müsstest du dann die Farbe setzen können.

Für näheres schau mal hier:
http://msdn2.microsoft.com/en-us/library/ms533267(VS… -> Device Contexts
http://msdn2.microsoft.com/en-us/library/ms534821(VS… -> Painting

mfg

lucas_d

Hallo Ben,

Ich würde das so machen:

BOOL onLButtonDown()
 {
 dc = GetDC(hWnd);
 HBRUSH MyBrush = CreateSolidBrush 
 (rand() \* (16700000 / 0x7fff)); //( RGB( 0, 0, 255 ) );
 RECT client;
 GetClientRect (hWnd, &client);

 // "MyBrush" \*nicht\* in den DC selektieren (sonst nur giftgruen):
 FillRect(dc, &client, MyBrush);

 ReleaseDC(hWnd, dc);
 return 0;
 }

Damit kannst Du die WM_PAINT behandeln, oder von wo aus immer.

lg
Martin B

Hallo Martin,

das war der entscheidende Tipp!
Funzt einwandfrei :smile:
Vielen Dank! Problem ist gelöst…und ich hab mir den Petzold gekauft…der beantwortet die meisten Fragen :wink:

Viele Grüße
Ben

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]