Delen via


Algemene weergaveapparaatcontexten

Een algemene apparaatcontext wordt gebruikt voor het tekenen in het clientgebied van het venster. Het systeem biedt standaard een algemene apparaatcontext voor elk venster waarvan de vensterklasse niet expliciet een weergaveapparaatcontextstijl opgeeft. Algemene apparaatcontexten worden meestal gebruikt met vensters die kunnen worden getekend zonder uitgebreide wijzigingen in de kenmerken van de apparaatcontext. Algemene apparaatcontexten zijn handig omdat ze geen extra geheugen- of systeembronnen nodig hebben, maar ze kunnen lastig zijn als de toepassing veel kenmerken moet instellen voordat ze worden gebruikt.

Het systeem haalt alle algemene apparaatcontexten op uit de cache van de weergavecontext. Een toepassing kan een algemene apparaatcontext ophalen direct nadat het venster is gemaakt. Omdat de algemene apparaatcontext afkomstig is uit de cache, moet de toepassing altijd zo snel mogelijk na het tekenen de apparaatcontext vrijgeven. Nadat de algemene apparaatcontext is vrijgegeven, is deze niet meer geldig en mag de toepassing er niet mee proberen te tekenen. Als u opnieuw wilt tekenen, moet de toepassing een nieuwe algemene apparaatcontext ophalen en een algemene apparaatcontext blijven ophalen en vrijgeven telkens wanneer deze in het venster wordt getekend. Als de toepassing de apparaatcontext-handle ophaalt met behulp van de functie GetDC-, moet deze de functie ReleaseDC gebruiken om de ingang vrij te geven. Op dezelfde manier moet de toepassing voor elke functie BeginPaint een bijbehorende EndPaint--functie gebruiken.

Wanneer de toepassing de apparaatcontext ophaalt, past het systeem de oorsprong aan zodat deze wordt uitgelijnd met de linkerbovenhoek van het clientgebied. Ook wordt het knipgebied zo ingesteld dat de uitvoer naar de apparaatcontext wordt geknipt naar het clientgebied. Alle uitvoer die anders buiten het clientgebied wordt weergegeven, wordt geknipt. Als de toepassing de algemene apparaatcontext ophaalt met behulp van BeginPaint-, bevat het systeem ook de updateregio in de knipregio om de uitvoer verder te beperken.

Wanneer een toepassing een algemene apparaatcontext vrijgeeft, herstelt het systeem de standaardwaarden voor de kenmerken van de apparaatcontext. Een toepassing die kenmerkwaarden wijzigt, moet dit telkens doen wanneer deze een algemene apparaatcontext ophaalt. Als u de apparaatcontext vrijgeeft, worden tekenobjecten vrijgegeven die de toepassing mogelijk heeft geselecteerd. De toepassing hoeft deze objecten dus niet vrij te geven voordat de apparaatcontext wordt vrijgegeven. In alle gevallen mag een toepassing nooit aannemen dat de algemene apparaatcontext niet-standaardselecties behoudt nadat deze is vrijgegeven.