Allgemeine Anzeigegerätekontexte

Ein gängiger Gerätekontext wird zum Zeichnen im Clientbereich des Fensters verwendet. Das System bietet standardmäßig einen allgemeinen Gerätekontext für jedes Fenster, dessen Fensterklasse nicht explizit einen Anzeigegerätekontextstil an gibt. Allgemeine Gerätekontexte werden in der Regel mit Fenstern verwendet, die ohne umfangreiche Änderungen an den Gerätekontextattributen gezeichnet werden können. Allgemeine Gerätekontexte sind praktisch, da sie keinen zusätzlichen Arbeitsspeicher oder systemressourcen erfordern. Sie können jedoch ungünstig sein, wenn die Anwendung viele Attribute einrichten muss, bevor sie verwendet werden.

Das System ruft alle allgemeinen Gerätekontexte aus dem Kontextcache des Anzeigegeräts ab. Eine Anwendung kann unmittelbar nach dem Erstellen des Fensters einen allgemeinen Gerätekontext abrufen. Da der allgemeine Gerätekontext aus dem Cache kommt, muss die Anwendung den Gerätekontext nach dem Zeichnen immer so schnell wie möglich wieder frei geben. Nachdem der allgemeine Gerätekontext freigegeben wurde, ist er nicht mehr gültig, und die Anwendung darf nicht versuchen, mit ihm zu zeichnen. Um erneut zu zeichnen, muss die Anwendung einen neuen allgemeinen Gerätekontext abrufen und bei jedem Zeichnen im Fenster weiterhin einen allgemeinen Gerätekontext abrufen und veröffentlichen. Wenn die Anwendung das Gerätekontexthandler mithilfe der GetDC-Funktion abruft, muss sie die ReleaseDC-Funktion verwenden, um das Handle frei zu geben. Entsprechend muss die Anwendung für jede BeginPaint-Funktion eine entsprechende EndPaint-Funktion verwenden.

Wenn die Anwendung den Gerätekontext abruft, passt das System den Ursprung so an, dass er an der oberen linken Ecke des Clientbereichs ausgerichtet wird. Außerdem wird der Ausschneidebereich so definiert, dass die Ausgabe an den Gerätekontext im Clientbereich abgeschnitten wird. Jede Ausgabe, die andernfalls außerhalb des Clientbereichs angezeigt wird, wird abgeschnitten. Wenn die Anwendung den allgemeinen Gerätekontext mit BeginPaintabruft, schließt das System auch den Updatebereich in den Ausschneidebereich ein, um die Ausgabe weiter einzuschränken.

Wenn eine Anwendung einen allgemeinen Gerätekontext frei gibt, stellt das System die Standardwerte für die Attribute des Gerätekontexts wieder zurück. Eine Anwendung, die Attributwerte ändert, muss dies jedes Mal tun, wenn sie einen allgemeinen Gerätekontext abruft. Durch die Freigabe des Gerätekontexts werden alle Zeichnungsobjekte frei, die die Anwendung möglicherweise ausgewählt hat, sodass die Anwendung diese Objekte nicht freigeben muss, bevor sie den Gerätekontext freilässt. In allen Fällen darf eine Anwendung nie davon ausgehen, dass der allgemeine Gerätekontext nach der Ent 0000-Enkung nicht standardmäßige Auswahlen beibebehalte.