Gerätekontexte anzeigen

Eine Anwendung erhält eine Anzeige DC, 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 eine Anzeige DC, wenn sie im Clientbereich zeichnen muss. Sie können jedoch einen Fenstergerätekontext abrufen, indem Sie die GetWindowDC-Funktion aufrufen. 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
  • Allgemein
  • Privat
  • Fenster
  • Parent

Klassengerätekontexte

Klassengerätekontexte werden streng für die Kompatibilität mit 16-Bit-Versionen von Windows unterstützt. Wenn Sie Ihre Anwendung schreiben, vermeiden Sie die Verwendung des Klassengerätkontexts; verwenden Sie stattdessen einen privaten Gerätekontext.

Allgemeine Gerätekontexte

Allgemeine Gerätekontexte werden in einem speziellen Cache durch das System verwaltete DCs angezeigt. Allgemeine Gerätekontexte werden in Anwendungen verwendet, die seltenen Zeichnungsvorgänge ausführen. Bevor das System den DC-Handle zurückgibt, initialisiert er den allgemeinen Gerätekontext mit Standardobjekten, Attributen und Modi. Alle Zeichnungsvorgänge, die von der Anwendung ausgeführt werden, verwenden diese Standardeinstellungen, sofern eine der GDI-Funktionen aufgerufen wird, 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 veröffentlicht, gehen alle Änderungen an den Standarddaten verloren.

Private Gerätekontexte

Private Gerätekontexte werden Angezeigte DCs angezeigt, die im Gegensatz zu gängigen Gerätekontexten alle Änderungen an den Standarddaten beibehalten, auch nachdem eine Anwendung sie veröffentlicht hat. Private Gerätekontexte werden in Anwendungen verwendet, die zahlreiche Zeichnungsvorgänge wie computergestützte Entwurfsanwendungen (CAD)-Anwendungen, Desktopveröffentlichungsanwendungen, Zeichnungs- und Gemäldeanwendungen ausführen. 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 zuerst die CS_OWNDC Fensterklassenformat angegeben wird, 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-Formatvorlage kann eine Anwendung die GetDC-, GetDCEx- oder BeginPaint-Funktion einmal aufrufen, um einen Handle zu erhalten, der einen privaten Gerätekontext identifiziert. Die Anwendung kann mit diesem Handle (und dem zugeordneten DC) fortfahren, bis es das Fenster löscht, das mit dieser Klasse erstellt wurde. Alle Änderungen an Grafikobjekten und deren Attributen oder Grafikmodi werden vom System beibehalten, bis das Fenster gelöscht wird.

Fenstergerätekontexte

Ein Fenstergerätkontext 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 Windows mit benutzerdefinierten Nichtclientbereichen verarbeiten. Die Verwendung eines Fenstergerätkontexts wird für einen anderen Zweck nicht empfohlen. Weitere Informationen; siehe GetWindowDC.

Übergeordnete Gerätekontexte

Ein übergeordneter Gerätekontext ermöglicht es einer Anwendung, die Zeit zu minimieren, die erforderlich ist, um den Clippingbereich für ein Fenster einzurichten. Eine Anwendung verwendet in der Regel übergeordnete Gerätekontexte, um die Zeichnung für Steuerelementfenster zu beschleunigen, ohne dass ein privater oder klassenbezogener Gerätekontext erforderlich ist. Das System verwendet beispielsweise übergeordnete Gerätekontexte für Push-Schaltflächen und Bearbeitungssteuerelemente. Übergeordnete Gerätekontexte sind nur für die Verwendung mit untergeordneten Fenstern vorgesehen, niemals mit oberen oder Popupfenstern. Weitere Informationen; siehe übergeordnete Gerätekontexte.