Gerätekontexte anzeigen

Eine Anwendung ruft einen Anzeige-DC ab, indem sie die Funktion BeginPaint, GetDC oder GetDCEx aufruft und das Fenster identifiziert, in dem die entsprechende Ausgabe angezeigt wird. In der Regel ruft eine Anwendung nur dann einen Anzeige-DC ab, wenn sie im Clientbereich zeichnen muss. Sie können jedoch einen Fenstergerätekontext abrufen, indem Sie die GetWindowDC-Funktion aufrufen. Wenn die Anwendung mit der Zeichnung fertig ist, muss sie den DC freigeben, indem die Funktion EndPaint oder ReleaseDC aufgerufen wird.

Es gibt fünf Arten von DCs für Videoanzeigen:

  • Klasse
  • Allgemein
  • Privat
  • Fenster
  • Parent

Klassengerätekontexte

Klassengerätekontexte werden aus Gründen der Kompatibilität mit 16-Bit-Versionen von Windows streng unterstützt. Vermeiden Sie beim Schreiben Ihrer Anwendung die Verwendung des Gerätekontexts der Klasse. verwenden Sie stattdessen einen privaten Gerätekontext.

Allgemeine Gerätekontexte

Gängige Gerätekontexte sind Anzeige-DCs, die vom System in einem speziellen Cache verwaltet werden. Allgemeine Gerätekontexte werden in Anwendungen verwendet, die seltene Zeichnungsvorgänge ausführen. Bevor das System das DC-Handle zurückgibt, initialisiert es den allgemeinen Gerätekontext mit Standardobjekten, Attributen und Modi. Alle von der Anwendung ausgeführten Zeichnungsvorgänge verwenden diese Standardwerte, es sei denn, eine der GDI-Funktionen wird aufgerufen, um ein neues Objekt auszuwählen, die Attribute eines vorhandenen Objekts zu ändern oder einen neuen Modus auszuwählen.

Da nur eine begrenzte Anzahl allgemeiner Gerätekontexte vorhanden ist, sollte eine Anwendung diese freigeben, nachdem sie die Zeichnung abgeschlossen hat. Wenn die Anwendung einen allgemeinen Gerätekontext freigibt, gehen alle Änderungen an den Standarddaten verloren.

Private Gerätekontexte

Private Gerätekontexte sind Anzeige-DCs, die im Gegensatz zu gängigen Gerätekontexten alle Änderungen an den Standarddaten beibehalten, auch nachdem eine Anwendung sie freigegeben hat. Private Gerätekontexte werden in Anwendungen verwendet, die zahlreiche Zeichnungsvorgänge ausführen, z. B. CAD-Anwendungen (Computer Aided Design), Desktop-Publishing-Anwendungen, Zeichen- und Malanwendungen usw. Private Gerätekontexte sind nicht Teil des Systemcaches und müssen daher nach der Verwendung nicht freigegeben werden. Das System entfernt automatisch einen privaten Gerätekontext, nachdem das letzte Fenster dieser Klasse zerstört wurde.

Eine Anwendung erstellt einen privaten Gerätekontext, indem sie zuerst den CS_OWNDC Fensterklassenstil angibt, wenn sie das Formatelement der WNDCLASS-Struktur initialisiert und die RegisterClass-Funktion aufruft. (Weitere Informationen zu Fensterklassen finden Sie unter Fensterklassen.)

Nach dem Erstellen eines Fensters mit der CS_OWNDC kann eine Anwendung die GetDC-, GetDCEx- oder BeginPaint-Funktion einmal aufrufen, um ein Handle abzurufen, das einen privaten Gerätekontext identifiziert. Die Anwendung kann dieses Handle (und den zugehörigen DC) weiterhin verwenden, bis sie das mit dieser Klasse erstellte Fenster löscht. Alle Änderungen an Grafikobjekten und deren Attributen oder Grafikmodi werden vom System beibehalten, bis das Fenster gelöscht wird.

Fenstergerätekontexte

Ein Fenstergerätekontext ermöglicht es einer Anwendung, überall in einem Fenster zu zeichnen, einschließlich des Nichtclientbereichs. Fenstergerätekontexte werden in der Regel von Anwendungen verwendet, die die WM_NCPAINT und WM_NCACTIVATE Nachrichten für Fenster mit benutzerdefinierten Nichtclientbereichen verarbeiten. Die Verwendung eines Fenstergerätekontexts wird nicht für andere Zwecke empfohlen. Weitere Informationen; Siehe GetWindowDC.

Übergeordnete Gerätekontexte

Mit einem übergeordneten Gerätekontext kann eine Anwendung die erforderliche Zeit zum Einrichten des Ausschneidebereichs für ein Fenster minimieren. Eine Anwendung verwendet in der Regel übergeordnete Gerätekontexte, um die Erstellung für Steuerungsfenster zu beschleunigen, ohne dass ein privater Gerätekontext oder ein Klassengerätekontext erforderlich ist. Das System verwendet beispielsweise übergeordnete Gerätekontexte für Drucktasten- und Bearbeitungssteuerelemente. Übergeordnete Gerätekontexte sind nur für die Verwendung mit untergeordneten Fenstern vorgesehen, nie mit Fenstern der obersten Ebene oder Popupfenstern. Weitere Informationen; Siehe Kontexte für übergeordnete Anzeigegeräte.