Freigeben über


Klassenanzeigegerätekontexte

Mithilfe eines Klassengerätekontextskann eine Anwendung einen einzelnen Anzeigegerätekontext für jedes Fenster verwenden, das zu einer bestimmten Klasse gehört. Klassengerätekontexte werden häufig mit Steuerelementfenstern verwendet, die mit denselben Attributwerten gezeichnet werden. Wie private Gerätekontexte minimieren Klassengerätekontexte die Zeit, die zum Vorbereiten eines Gerätekontexts für die Zeichnung erforderlich ist.

Das System stellt einen Klassengerätekontext für ein Fenster bereit, wenn es zu einer Fensterklasse gehört, die die CS_CLASSDC Formatvorlage aufweist. Das System erstellt den Gerätekontext beim Erstellen des ersten Fensters, das zur Klasse gehört, und verwendet dann denselben Gerätekontext für alle anschließend erstellten Fenster in der Klasse. Anfangs weist der Klassengerätekontext dieselben Standardwerte für Attribute wie einen allgemeinen Gerätekontext auf, die Anwendung kann diese jedoch jederzeit ändern. Das System behält alle Änderungen mit Ausnahme des Clippingbereichs und des Geräteursprungs bei, bis das letzte Fenster in der Klasse zerstört wurde. Eine für ein Fenster vorgenommene Änderung gilt für alle Fenster in dieser Klasse.

Eine Anwendung kann das Handle für den Klassengerätekontext mithilfe der GetDC--Funktion jederzeit abrufen, nachdem das erste Fenster erstellt wurde. Die Anwendung kann das Handle beibehalten und verwenden, ohne es freizugeben, da der Klassengerätekontext nicht Teil des Kontextcaches des Anzeigegeräts ist. Wenn die Anwendung ein weiteres Fenster in derselben Fensterklasse erstellt, muss die Anwendung den Klassengerätekontext erneut abrufen. Beim Abrufen des Gerätekontexts wird der richtige Geräteursprung und der Clippingbereich für das neue Fenster festgelegt. Nachdem die Anwendung den Klassengerätekontext für ein neues Fenster in der Klasse abgerufen hat, kann der Gerätekontext nicht mehr zum Zeichnen im ursprünglichen Fenster verwendet werden, ohne ihn erneut für dieses Fenster abzurufen. Im Allgemeinen muss eine Anwendung bei jedem Zeichnen in einem Fenster explizit den Klassengerätekontext für das Fenster abrufen.

Anwendungen, die Klassengerätekontexte verwenden, sollten beim Verarbeiten einer WM_PAINT Nachricht immer BeginPaint- aufrufen. Die Funktion legt den richtigen Geräteursprung- und Clippingbereich für das Fenster fest und enthält den Aktualisierungsbereich. Die Anwendung sollte auch EndPaint- aufrufen, um das Caret wiederherzustellen, wenn BeginPaint sie ausgeblendet hat. EndPaint hat keine andere Auswirkung auf einen Klassengerätekontext.

Das System übergibt den Klassengerätekontext, wenn die WM_ERASEBKGND Nachricht an die Anwendung gesendet wird. Dadurch können sich die aktuellen Attributwerte auf alle von der Anwendung oder dem System beim Verarbeiten dieser Nachricht durchgeführten Zeichnung auswirken. Wie bei einem Fenster mit einem privaten Gerätekontext kann eine Anwendung GetDCEx- verwenden, um zu erzwingen, dass das System einen allgemeinen Gerätekontext für das Fenster zurückgibt, das über einen Klassengerätekontext verfügt.

Die Verwendung von Klassengerätekontexten wird nicht empfohlen.