Wann in einem Fenster gezeichnet werden soll
Eine Anwendung zeichnet ein Fenster zu verschiedenen Zeiten: beim ersten Erstellen eines Fensters, beim Ändern der Größe des Fensters, beim Verschieben des Fensters hinter ein anderes Fenster, beim Minimieren oder Maximieren des Fensters, beim Anzeigen von Daten aus einer geöffneten Datei und beim Scrollen, Ändern oder Auswählen eines Teils der angezeigten Daten.
Das System verwaltet Aktionen wie das Verschieben und Dimensionieren eines Fensters. Wenn sich eine Aktion auf den Inhalt des Fensters auswirkt, markiert das System den betroffenen Teil des Fensters als bereit für die Aktualisierung und sendet bei der nächsten Gelegenheit eine WM_PAINT Meldung an die Fensterprozedur des Fensters. Die Meldung ist ein Signal an die Anwendung, um zu bestimmen, was aktualisiert werden muss, und die erforderliche Zeichnung durchzuführen.
Einige Aktionen werden von der Anwendung verwaltet, z. B. das Anzeigen geöffneter Dateien und das Auswählen der angezeigten Daten. Bei diesen Aktionen kann eine Anwendung markieren, um den Teil des Fensters zu aktualisieren, der von der Aktion betroffen ist, wodurch bei der nächsten Gelegenheit eine WM_PAINT Nachricht gesendet wird. Wenn eine Aktion sofortiges Feedback erfordert, kann die Anwendung während der Durchführung der Aktion zeichnen, ohne auf WM_PAINT zu warten. Beispielsweise hebt eine typische Anwendung den Bereich hervor, den der Benutzer auswählt, anstatt auf die nächste WM_PAINT Nachricht zu warten, um den Bereich zu aktualisieren.
In allen Fällen kann eine Anwendung in einem Fenster zeichnen, sobald sie erstellt wird. Zum Zeichnen im Fenster muss die Anwendung zunächst ein Handle für einen Anzeigegerätekontext für das Fenster abrufen. Im Idealfall führt eine Anwendung die meisten Zeichnungsvorgänge während der Verarbeitung von WM_PAINT Nachrichten aus. In diesem Fall ruft die Anwendung einen Anzeigegerätekontext ab, indem sie die BeginPaint-Funktion aufruft . Wenn eine Anwendung zu einem anderen Zeitpunkt zeichnet, z. B. aus WinMain oder während der Verarbeitung von Tastatur- oder Mausnachrichten, ruft sie die GetDC - oder GetDCEx-Funktion auf, um den Anzeige-DC abzurufen.