Freigeben über


Fensterhintergrund

Der Fensterhintergrund ist die Farbe oder das Muster, die verwendet wird, um den Clientbereich zu füllen, bevor ein Fenster mit dem Zeichnen beginnt. Der Fensterhintergrund deckt alles ab, was sich auf dem Bildschirm befand, bevor das Fenster dorthin verschoben wurde, löscht vorhandene Bilder und verhindert, dass die neue Ausgabe der Anwendung mit nicht zusammenhängenden Informationen gemischt wird.

Das System zeichnet den Hintergrund für ein Fenster oder gibt dem Fenster die Möglichkeit, dies zu tun, indem es eine WM_ERASEBKGND Nachricht sendet, wenn die Anwendung BeginPaint aufruft. Wenn eine Anwendung die Nachricht nicht verarbeitet, sondern an DefWindowProc übergibt, löscht das System den Hintergrund, indem es ihn mit dem Muster im Hintergrundpinsel füllt, der von der Klasse des Fensters angegeben wird. Wenn der Pinsel ungültig ist oder die Klasse keinen Hintergrundpinsel hat, legt das System den fErase-Member in der PAINTSTRUCT-Struktur fest, die BeginPaint zurückgibt, führt aber keine andere Aktion aus. Die Anwendung hat dann bei Bedarf eine zweite Chance, den Fensterhintergrund zu zeichnen.

Wenn sie WM_ERASEBKGND verarbeitet, sollte die Anwendung den wParam-Parameter der Nachricht verwenden, um den Hintergrund zu zeichnen. Dieser Parameter enthält ein Handle für den Anzeigegerätekontext für das Fenster. Nach dem Zeichnen des Hintergrunds sollte die Anwendung einen wert ohne Zero zurückgeben. Dadurch wird sichergestellt, dass BeginPaint das fErase-Element der PAINTSTRUCT-Struktur nicht fälschlicherweise auf einen Nonzero-Wert (der angibt, dass der Hintergrund gelöscht werden soll), wenn die Anwendung die nachfolgende WM_PAINT-Nachricht verarbeitet.

Eine Anwendung kann einen Klassenhintergrundpinsel definieren, indem sie dem hbrBackground-Member der WNDCLASS-Struktur beim Registrieren der Klasse bei der RegisterClass-Funktion einen Pinselhandle oder einen Systemfarbwert zuweisen. Mit der Funktion GetStockObject oder CreateSolidBrush kann ein Pinselhandle erstellt werden. Ein Systemfarbwert kann einer der für die SetSysColors-Funktion definierten Werte sein. (Der Wert muss um eins erhöht werden, bevor er dem Member zugewiesen wird.)

Eine Anwendung kann die WM_ERASEBKGND-Nachricht verarbeiten, obwohl ein Klassenhintergrundpinsel definiert ist. Dies ist typisch für Anwendungen, die es dem Benutzer ermöglichen, die Hintergrundfarbe oder das Muster des Fensters für ein angegebenes Fenster zu ändern, ohne sich auf andere Fenster in der Klasse zu auswirken. In solchen Fällen darf die Anwendung die Nachricht nicht an DefWindowProc übergeben.

Eine Anwendung muss keine Pinsel ausrichten, da das System den Pinsel mit dem Fensterursprung als Bezugspunkt zeichnet. Daher kann der Benutzer das Fenster verschieben, ohne die Ausrichtung der Musterpinsel zu beeinträchtigen.