Freigeben über


Allgemeine Gerätekontexte

Ein allgemeiner Gerätekontext wird zum Zeichnen im Clientbereich des Fensters verwendet. Das System stellt standardmäßig einen allgemeinen Gerätekontext für jedes Fenster bereit, dessen Fensterklasse nicht explizit einen Anzeigegerätekontextstil angibt. 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 keine zusätzlichen Arbeitsspeicher- oder Systemressourcen erfordern, aber sie können unpraktisch sein, wenn die Anwendung viele Attribute einrichten muss, bevor sie verwendet werden.

Das System ruft alle gängigen Gerätekontexte aus dem Kontextcache des Anzeigegeräts ab. Eine Anwendung kann einen allgemeinen Gerätekontext unmittelbar nach dem Erstellen des Fensters abrufen. Da der allgemeine Gerätekontext aus dem Cache stammt, muss die Anwendung den Gerätekontext immer so schnell wie möglich nach dem Zeichnen freigeben. Nachdem der allgemeine Gerätekontext freigegeben wurde, ist er nicht mehr gültig, und die Anwendung darf nicht versuchen, damit zu zeichnen. Um erneut zu zeichnen, muss die Anwendung einen neuen allgemeinen Gerätekontext abrufen und weiterhin einen allgemeinen Gerätekontext abrufen und bei jedem Zeichnen im Fenster freigeben. Wenn die Anwendung das Gerätekontexthandle mithilfe der GetDC-Funktion abruft, muss sie die ReleaseDC-Funktion verwenden, um das Handle freizugeben. Ebenso 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 Abschneidebereich so festgelegt, dass die Ausgabe im Gerätekontext im Clientbereich abgeschnitten wird. Jede Ausgabe, die andernfalls außerhalb des Clientbereichs angezeigt würde, wird abgeschnitten. Wenn die Anwendung den allgemeinen Gerätekontext mithilfe von BeginPaint abruft, schließt das System auch den Updatebereich im Abschneidebereich ein, um die Ausgabe weiter einzuschränken.

Wenn eine Anwendung einen allgemeinen Gerätekontext freigibt, stellt das System die Standardwerte für die Attribute des Gerätekontexts wieder her. Eine Anwendung, die Attributwerte ändert, muss dies jedes Mal tun, wenn sie einen allgemeinen Gerätekontext abruft. Durch das Freigeben des Gerätekontexts werden alle Zeichnungsobjekte freigegeben, die die Anwendung möglicherweise in ihn ausgewählt hat, sodass die Anwendung diese Objekte vor dem Freigeben des Gerätekontexts nicht freigeben muss. In allen Fällen darf eine Anwendung nie davon ausgehen, dass der allgemeine Gerätekontext nach der Veröffentlichung nicht standardmäßige Auswahlen beibehält.