Allgemeine Anzeigegerätekontexte
Ein gängiger 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 keinen expliziten 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 unannelich sein, wenn die Anwendung viele Attribute einrichten muss, bevor sie verwendet werden.
Das System ruft alle gängigen Gerätekontexte aus dem Cache für den Anzeigegerätekontext 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 nach der Zeichnung immer so schnell wie möglich freigeben. Nachdem der allgemeine Gerätekontext freigegeben wurde, ist er nicht mehr gültig, und die Anwendung darf nicht versuchen, mit ihr zu zeichnen. Um wieder zu zeichnen, muss die Anwendung einen neuen allgemeinen Gerätekontext abrufen und weiterhin einen gemeinsamen Gerätekontext abrufen und freigeben, wenn er im Fenster zeichnet. 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 Clippingbereich so festgelegt, dass die Ausgabe im Gerätekontext auf den Clientbereich zugeschnitten wird. Alle Ausgaben, die andernfalls außerhalb des Clientbereichs angezeigt werden, werden abgeschnitten. Wenn die Anwendung den allgemeinen Gerätekontext mithilfe von BeginPaintabruft, enthält das System auch den Aktualisierungsbereich im Clippingbereich, 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 ein allgemeiner Gerätekontext abgerufen wird. Durch das Freigeben des Gerätekontexts werden alle Zeichnungsobjekte freigegeben, die von der Anwendung ausgewählt wurden. Daher muss die Anwendung diese Objekte nicht freigeben, bevor sie den Gerätekontext freigeben. In allen Fällen darf eine Anwendung niemals davon ausgehen, dass der allgemeine Gerätekontext nach der Veröffentlichung nicht standardmäßige Auswahlen beibehält.