Anzeigen von Gerätekontexten

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

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

  • Klasse
  • Allgemein
  • Privat
  • Fenster
  • Parent

Klassengerätekontexte

Klassengerätekontexte werden ausschließlich aus Kompatibilitäts- und 16-Bit-Versionen von Windows. Vermeiden Sie beim Schreiben Ihrer Anwendung die Verwendung des Klassengerätekontexts. Verwenden Sie stattdessen einen privaten Gerätekontext.

Allgemeine Gerätekontexte

Allgemeine Gerätekontexte sind Anzeige-Dcs, die vom System in einem speziellen Cache verwaltet werden. Allgemeine Gerätekontexte werden in Anwendungen verwendet, die selten 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 gängiger Gerätekontexte vorhanden ist, sollte eine Anwendung sie nach Abschluss des Zeichnens wieder frei geben. Wenn die Anwendung einen allgemeinen Gerätekontext frei gibt, gehen alle Änderungen an den Standarddaten verloren.

Private Gerätekontexte

Private Gerätekontexte sind Anzeige-Dcs, die im Gegensatz zu gängigen Gerätekontexten änderungen an den Standarddaten auch nach der Freigabe durch eine 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 Zeichnungsanwendungen und so weiter. 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 ankn., wenn sie den Stil member der _ WNDCLASS-Struktur initialisiert und die RegisterClass-Funktion aufruft. (Weitere Informationen zu Fensterklassen finden Sie unter Fensterklassen.)

Nach dem Erstellen eines Fensters im CS OWNDC-Stil kann eine Anwendung die _ GetDC-, GetDCEx-oder BeginPaint-Funktion einmal aufrufen, um ein Handle zu erhalten, das einen privaten Gerätekontext identifiziert. Die Anwendung kann dieses Handle (und den zugeordneten 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

Mit einem Fenstergerätekontext kann eine Anwendung überall in einem Fenster zeichnen, einschließlich des Nicht-Clientbereichs. 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 keinen anderen Zweck empfohlen. Weitere Informationen finden Sie unter . siehe GetWindowDC.

Übergeordnete Gerätekontexte

Mit einem übergeordneten Gerätekontext kann eine Anwendung die Zeit minimieren, die zum Einrichten des Ausschneidebereichs für ein Fenster erforderlich ist. Eine Anwendung verwendet in der Regel übergeordnete Gerätekontexte, um das Zeichnen für Steuerfenster zu beschleunigen, ohne dass ein privater oder Klassengerätekontext erforderlich ist. Beispielsweise verwendet das System übergeordnete Gerätekontexte für Pushschaltfläche 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 finden Sie unter . weitere Informationen finden Sie unter Gerätekontexte für die übergeordnete Anzeige.