2 Antworten

Wenn ich dich richtig verstehe, willst du die Hintergrundfarbe deines Fensters ändern oder ein Hintergrundbild für dein Fenster verwenden.

Wenn du vom Programmstart an weißt, welche Hintergrundfarbe du verwenden willst, musst du lediglich "wincl.hbrBackground" entsprechend setzen:

// Ändern Zeile 49:
wincl.hbrBackground = CreateSolidBrush(Farbcode);

Farbcode ist dabei ein 24-bit-Integer, meines Wissens 0xBBGGRR (also z.b. 0x8000FF = 50% Blau und 100% Rot).

Wenn du ein Hintergrundbild verwenden willst und/oder die Farbe während das Programm läuft verändern willst, wird es wesentlich komplizierter:

Du must die "WM_ERASEBKGND"-Botschaft bearbeiten, also folgenden Code einfügen:

HDC dc;
...
// Einfügen zwischen Zeilen 163 und 164:
case WM_ERASEBKGND:
dc=(HDC)wParam;
...
// Hier einige Zeichenbefehle
...
return 1; // Ungleich 0

Alternativ kannst du auch "WM_PAINT" anstatt "WM_ERASEBKGND" verwenden, das ist aber etwas komplizierter...

Mit den "Zeichenbefehlen" musst du z.B. ein ausgefülltes blaues Rechteck zeichnen, das so groß ist, wie dein gesamtes Fenster, wenn der Hintergrund deines Fensters blau sein soll.

Die Fenstergröße kann man mit dem Befehl "GetClientRect" abfragen.

Der Wert von "wincl.hbrBackground" wird in diesem Fall übrigens ignoriert.

Wenn du ein Hintergrundbild haben willst, musst du einen Zeichenbefehl verwenden, mit dem man Bilder zeichnen kann (z.B. "BitBlt" oder "StretchBlt").

Leider sind Bilder in Win32 alles andere als trivial. Ich habe bis heute nicht herausbekommen, ob es ohne zusätzliche Bibliotheken überhaupt möglich ist, in Win32 andere Dateiformate als ".BMP" zu verwenden und selbst für ".BMP" ist Einiges an Programmierarbeit erforderlich...

Antwort bewerten Vielen Dank für Deine Bewertung

danke

Antwort bewerten Vielen Dank für Deine Bewertung