Apparaatcontexten van klasseweergave
Met behulp van een klasseapparaatcontext, kan een toepassing één weergaveapparaatcontext gebruiken voor elk venster dat deel uitmaakt van een opgegeven klasse. Contexten van klassenapparaten worden vaak gebruikt met besturingsvensters die worden getekend met dezelfde kenmerkwaarden. Net als privéapparaatcontexten minimaliseren klasseapparaatcontexten de tijd die nodig is om een apparaatcontext voor te bereiden voor tekenen.
Het systeem levert een klasseapparaatcontext voor een venster als het behoort tot een vensterklasse met de CS_CLASSDC stijl. Het systeem maakt de apparaatcontext bij het maken van het eerste venster dat hoort bij de klasse en gebruikt vervolgens dezelfde apparaatcontext voor alle vervolgens gemaakte vensters in de klasse. In eerste instantie heeft de klasseapparaatcontext dezelfde standaardwaarden voor kenmerken als een algemene apparaatcontext, maar de toepassing kan deze op elk gewenst moment wijzigen. Het systeem behoudt alle wijzigingen, met uitzondering van de knipregio en de oorsprong van het apparaat, totdat het laatste venster in de klasse is vernietigd. Een wijziging die voor één venster is aangebracht, is van toepassing op alle vensters in die klasse.
Een toepassing kan de ingang ophalen in de context van het klasseapparaat met behulp van de functie GetDC- op elk gewenst moment nadat het eerste venster is gemaakt. De toepassing kan de ingang behouden en gebruiken zonder deze vrij te geven omdat de context van het klasseapparaat geen deel uitmaakt van de contextcache van het weergaveapparaat. Als de toepassing een ander venster in dezelfde vensterklasse maakt, moet de toepassing de context van het klasseapparaat opnieuw ophalen. Als u de apparaatcontext opzoekt, wordt de juiste oorsprong van het apparaat en de juiste regio voor het nieuwe venster ingesteld. Nadat de toepassing de context van het klasseapparaat voor een nieuw venster in de klasse heeft opgehaald, kan de apparaatcontext niet meer worden gebruikt om in het oorspronkelijke venster te tekenen zonder het opnieuw op te halen voor dat venster. Over het algemeen moet een toepassing telkens wanneer deze in een venster tekent, expliciet de context van het klasseapparaat voor het venster ophalen.
Toepassingen die gebruikmaken van klasseapparaatcontexten moeten altijd BeginPaint- aanroepen bij het verwerken van een WM_PAINT bericht. Met de functie wordt de juiste oorspronkelijke en uitknipregio voor het apparaat ingesteld voor het venster en wordt de updateregio opgenomen. De toepassing moet ook EndPaint- aanroepen om de caret te herstellen als BeginPaint verborgen. EndPaint- heeft geen ander effect op een apparaatcontext van een klasse.
Het systeem geeft de context van het klasseapparaat door wanneer het WM_ERASEBKGND bericht naar de toepassing wordt verzonden, zodat de huidige kenmerkwaarden van invloed kunnen zijn op elke tekening die door de toepassing of het systeem wordt uitgevoerd bij het verwerken van dit bericht. Net als bij een venster met een privéapparaatcontext, kan een toepassing GetDCEx- gebruiken om af te dwingen dat het systeem een algemene apparaatcontext retourneert voor het venster met een apparaatcontext van klasse.
Het gebruik van apparaatcontexten van klassen wordt niet aanbevolen.