Freigeben über


Klassenanzeigegerätekontexte

Mithilfe eines Klassengerätekontexts kann eine Anwendung einen einzelnen Anzeigegerätekontext für jedes Fenster verwenden, das zu einer angegebenen Klasse gehört. Klassengerätekontexte werden häufig mit Steuerelementfenstern verwendet, die mit den gleichen Attributwerten gezeichnet werden. Wie bei privaten Gerätekontexten minimieren Klassengerätekontexte die Zeit, die zum Vorbereiten eines Gerätekontexts für das Zeichnen erforderlich ist.

Das System stellt einen Klassengerätekontext für ein Fenster bereit, wenn es zu einer Fensterklasse mit dem CS_CLASSDC Stil gehört. 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. Zunächst verfügt der Klassengerätekontext über die gleichen Standardwerte für Attribute wie ein allgemeiner Gerätekontext, aber die Anwendung kann diese 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 jederzeit mit der GetDC-Funktion 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 Gerätekontext der Klasse erneut abrufen. Beim Abrufen des Gerätekontexts wird der richtige Geräteursprung und beschneidungsbereich 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 für dieses Fenster erneut abzurufen. Im Allgemeinen muss eine Anwendung bei jedem Zeichnen in einem Fenster explizit den Klassengerätekontext für das Fenster abrufen.

Anwendungen, die Gerätekontexte der Klasse verwenden, sollten bei der Verarbeitung einer WM_PAINT Nachricht immer BeginPaint aufrufen. Die Funktion legt den richtigen Geräteursprung und den richtigen Beschneidungsbereich für das Fenster fest und integriert den Updatebereich. Die Anwendung sollte auch EndPaint aufrufen, um das Caret wiederherzustellen, wenn BeginPaint es ausgeblendet hat. EndPaint hat keine anderen Auswirkungen auf den Kontext eines Klassengerätes.

Das System übergibt den Klassengerätekontext beim Senden der WM_ERASEBKGND-Nachricht an die Anwendung, soweit die aktuellen Attributwerte sich auf alle Zeichnungen auswirken können, die von der Anwendung oder dem System bei der Verarbeitung dieser Nachricht ausgeführt werden. 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 mit einem Klassengerätekontext zurückgibt.

Die Verwendung von Klassengerätekontexten wird nicht empfohlen.