Teilen über


Gerätekontexte anzeigen

Eine Anwendung ruft eine Anzeige-DC ab, indem sie die BeginPaint-, GetDC-oder GetDCEx-funktion aufrufen und das Fenster identifizieren, in dem die entsprechende Ausgabe angezeigt wird. In der Regel erhält eine Anwendung nur dann eine Anzeige-DC, wenn sie im Clientbereich zeichnen muss. Allerdings kann ein Fenstergerätekontext durch Aufrufen der GetWindowDC--Funktion abgerufen werden. Wenn die Anwendung die Zeichnung abgeschlossen hat, muss sie den DC freigeben, indem die funktion EndPaint oder ReleaseDC- aufgerufen wird.

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

  • Klasse
  • Gemeinsam
  • Privat
  • Fenster
  • Elternteil

Klassengerätekontexte

Klassengerätekontexte werden streng zur Kompatibilität mit 16-Bit-Versionen von Windows unterstützt. Vermeiden Sie beim Schreiben Ihrer Anwendung den Klassengerätekontext; verwenden Sie stattdessen einen privaten Gerätekontext.

Allgemeine Gerätekontexte

allgemeine Gerätekontexte werden vom System in einem speziellen Cache verwaltete DCs angezeigt. Häufige Gerätekontexte werden in Anwendungen verwendet, die seltene Zeichnungsvorgänge ausführen. Bevor das System den 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 sie 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 anzeige-DCs sind, die im Gegensatz zu gängigen Gerätekontexten änderungen an den Standarddaten auch nach der Veröffentlichung einer Anwendung beibehalten. Private Gerätekontexte werden in Anwendungen verwendet, die zahlreiche Zeichnungsvorgänge ausführen, z. B. CAD-Anwendungen (Computer aided Design), Desktopveröffentlichungsanwendungen, Zeichnungs- und Lackieranwendungen 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 Kontext für private Geräte, indem sie zuerst die CS_OWNDC Fensterklassenformatvorlage angibt, wenn sie die Formatvorlage Member der WNDCLASS--Struktur initialisiert und die RegisterClass--Funktion aufruft. (Weitere Informationen zu Fensterklassen finden Sie unter Window Classes.)

Nach dem Erstellen eines Fensters mit der CS_OWNDC-Formatvorlage kann eine Anwendung die GetDC-, GetDCEx-oder BeginPaint--Funktion einmal aufrufen, um ein Handle zur Identifizierung eines privaten Gerätekontexts abzurufen. Die Anwendung kann mit diesem Handle (und dem zugeordneten DC) fortfahren, bis es 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, an einer beliebigen Stelle 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 für andere Zwecke nicht empfohlen. Weitere Informationen; siehe GetWindowDC.

Übergeordnete Gerätekontexte

Ein übergeordneter Gerätekontext ermöglicht es einer Anwendung, die zum Einrichten des Clippingbereichs für ein Fenster erforderliche Zeit zu minimieren. Eine Anwendung verwendet in der Regel übergeordnete Gerätekontexte, um die Zeichnung für Steuerfenster zu beschleunigen, ohne dass ein privater oder klassenbezogener Gerätekontext erforderlich ist. Das System verwendet z. B. übergeordnete Gerätekontexte für Knopfdruck- und Bearbeitungssteuerelemente. Übergeordnete Gerätekontexte sind nur für untergeordnete Fenster vorgesehen, niemals mit Fenstern der obersten Ebene oder Popupfenstern. Weitere Informationen; siehe Übergeordnete Anzeigegerätekontexte.