Osztálymegjelenítési eszközkörnyezetek
Egy osztályeszköz-környezethasználatával az alkalmazások egyetlen megjelenítési eszközkörnyezetet használhatnak egy adott osztályhoz tartozó minden ablakhoz. Az osztályeszköz-környezeteket gyakran használják olyan vezérlőablakokkal, amelyeket ugyanazokkal az attribútumértékekkel rajzolnak meg. A privát eszközkörnyezetekhez hasonlóan az osztályeszköz-környezetek is minimalizálják az eszközkörnyezet rajzhoz való előkészítéséhez szükséges időt.
A rendszer egy osztályeszköz-környezetet biztosít egy ablakhoz, ha egy CS_CLASSDC stílusú ablakosztályhoz tartozik. A rendszer az osztályhoz tartozó első ablak létrehozásakor hozza létre az eszközkörnyezetet, majd ugyanazt az eszközkörnyezetet használja az osztály összes később létrehozott ablakához. Az osztályeszköz-környezet kezdetben ugyanazokat az alapértelmezett értékeket tartalmazza az attribútumokhoz, mint egy közös eszközkörnyezet, de az alkalmazás bármikor módosíthatja ezeket. A rendszer megőrzi az összes módosítást, kivéve a kivágási régiót és az eszköz forrását, amíg az osztály utolsó ablaka el nem pusztul. Az egyablakos módosítás az adott osztály összes ablakára vonatkozik.
Az alkalmazások az első ablak létrehozása után bármikor lekérhetik a leírót az osztályeszköz környezetéhez a GetDC függvénnyel. Az alkalmazás anélkül is megtarthatja és használhatja a leírót, hogy felengedné, mert az osztályeszköz-környezet nem része a megjelenítési eszköz környezeti gyorsítótárának. Ha az alkalmazás egy másik ablakot hoz létre ugyanabban az ablakosztályban, az alkalmazásnak újra le kell kérnie az osztályeszköz környezetét. Az eszközkörnyezet beolvasása beállítja az új ablak megfelelő eszköz forrását és kivágási régióját. Miután az alkalmazás lekérte az osztály egy új ablakának osztályeszköz-környezetét, az eszközkörnyezet már nem használható az eredeti ablakban való rajzoláshoz anélkül, hogy újból le kellene kérnie az adott ablakhoz. Általában minden alkalommal, amikor egy ablakban kell rajzolnia, az alkalmazásnak explicit módon le kell kérnie az ablak osztályeszköz-környezetét.
Az osztályeszköz-környezeteket használó alkalmazásoknak mindig BeginPaint kell hívniuk WM_PAINT üzenet feldolgozásakor. A függvény beállítja az ablak megfelelő eszköz-forrását és kivágási régióját, és magában foglalja a frissítési régiót. Az alkalmazásnak EndPaint is meg kell hívnia a gondozás visszaállításához, ha BeginPaint elrejtette. EndPaint nincs más hatása az osztályeszköz-környezetekre.
A rendszer átadja az osztályeszköz környezetét, amikor elküldi az WM_ERASEBKGND üzenetet az alkalmazásnak, így az aktuális attribútumértékek hatással lehetnek az alkalmazás vagy a rendszer által az üzenet feldolgozása során végzett rajzra. Mivel egy privát eszközkörnyezettel rendelkező ablak esetében az alkalmazások GetDCEx használatával kényszeríthetik a rendszert arra, hogy egy általános eszközkörnyezetet adjon vissza az osztályeszköz-környezettel rendelkező ablakhoz.
Az osztályeszköz-környezetek használata nem ajánlott.