Teilen über


Fensterhintergrund

Der Fensterhintergrund ist die Farbe oder das Muster, die zum Ausfüllen des Clientbereichs verwendet werden, bevor ein Fenster mit der Zeichnung beginnt. Der Fensterhintergrund deckt alle Elemente auf dem Bildschirm ab, bevor das Fenster dorthin verschoben wurde, und löscht vorhandene Bilder und verhindert, dass die neue Ausgabe der Anwendung mit nicht verknüpften 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 BeginPaintaufruft. Wenn eine Anwendung die Nachricht nicht verarbeitet, sie aber an DefWindowProcübergibt, löscht das System den Hintergrund, indem es mit dem Muster im Hintergrundpinsel gefüllt wird, der von der Klasse des Fensters angegeben wird. Wenn der Pinsel ungültig ist oder die Klasse keinen Hintergrundpinsel aufweist, legt das System den fErase- Member in der PAINTSTRUCT- Struktur fest, die BeginPaint- zurückgibt, führt jedoch keine andere Aktion aus. Die Anwendung hat dann bei Bedarf eine zweite Chance, den Fensterhintergrund zu zeichnen.

Wenn sie WM_ERASEBKGNDverarbeitet, sollte die Anwendung den wParam--Parameter 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 ungleich Null zurückgeben. Dadurch wird sichergestellt, dass BeginPaint- den fErase- Member der PAINTSTRUCT- Struktur nicht auf einen Wert ungleich Null (der angibt, dass der Hintergrund gelöscht werden soll) nicht festgelegt wird, wenn die Anwendung die nachfolgende WM_PAINT Nachricht verarbeitet.

Eine Anwendung kann einen Klassenhintergrundpinsel definieren, indem ein Pinselziehpunkt oder ein Systemfarbwert dem hbrBackground Member der WNDCLASS Struktur zugewiesen wird, wenn die Klasse mit der RegisterClass-Funktion registriert wird. Die GetStockObject- oder CreateSolidBrush--Funktion kann verwendet werden, um einen Pinselziehpunkt zu erstellen. Ein Systemfarbwert kann einer der für die SetSysColors--Funktion definierten Wert sein. (Der Wert muss um eine erhöht werden, bevor er dem Element 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 dass sich dies auf andere Fenster in der Klasse auswirkt. In solchen Fällen darf die Anwendung die Nachricht nicht an DefWindowProcübergeben.

Es ist nicht erforderlich, dass eine Anwendung Pinsel ausrichten kann, da das System den Pinsel mit dem Fensterursprung als Referenzpunkt zeichnet. Da dies der Fall ist, kann der Benutzer das Fenster verschieben, ohne die Ausrichtung von Musterpinseln zu beeinträchtigen.