Delen via


Apparaatcontexten weergeven

Een toepassing verkrijgt een weergavedomeincontroller door de functie BeginPaint, GetDC-of GetDCEx- aan te roepen en het venster te identificeren waarin de bijbehorende uitvoer wordt weergegeven. Normaal gesproken verkrijgt een toepassing alleen een weergavedomeincontroller wanneer deze in het clientgebied moet worden getekend. Er kan echter een vensterapparaatcontext worden verkregen door de functie GetWindowDC- aan te roepen. Wanneer de toepassing klaar is met tekenen, moet deze de DC vrijgeven door de EndPaint- of releaseDC--functie aan te roepen.

Er zijn vijf typen DC's voor videoweergaven:

  • Klas
  • Gemeenschappelijk
  • Privé
  • Venster
  • Ouder

Klasapparaatcontexten

Klasse-apparaatcontexten worden strikt ondersteund voor compatibiliteit met 16-bits versies van Windows. Vermijd bij het schrijven van uw toepassing de context van het klasseapparaat; gebruik in plaats daarvan een privéapparaatcontext.

Algemene apparaatcontexten

Algemene apparaatcontexten worden weergegeven in een speciale cache door het systeem. Algemene apparaatcontexten worden gebruikt in toepassingen die onregelmatige tekenbewerkingen uitvoeren. Voordat het systeem de DC-ingang retourneert, wordt de algemene apparaatcontext geïnitialiseerd met standaardobjecten, kenmerken en modi. Tekenbewerkingen die door de toepassing worden uitgevoerd, gebruiken deze standaardwaarden, tenzij een van de GDI-functies wordt aangeroepen om een nieuw object te selecteren, de kenmerken van een bestaand object te wijzigen of een nieuwe modus te selecteren.

Omdat er slechts een beperkt aantal algemene apparaatcontexten bestaat, moet een toepassing deze vrijgeven nadat het tekenen is voltooid. Wanneer de toepassing een algemene apparaatcontext publiceert, gaan eventuele wijzigingen in de standaardgegevens verloren.

Contexten voor privéapparaten

privéapparaatcontexten zijn weergave-DC's die, in tegenstelling tot algemene apparaatcontexten, wijzigingen in de standaardgegevens behouden, zelfs nadat een toepassing ze heeft uitgebracht. Privéapparaatcontexten worden gebruikt in toepassingen die talloze tekenbewerkingen uitvoeren, zoals CAD-toepassingen (computer-aided design), bureaubladpublicatietoepassingen, teken- en schildertoepassingen, enzovoort. Privéapparaatcontexten maken geen deel uit van de systeemcache en hoeven daarom niet na gebruik te worden vrijgegeven. Het systeem verwijdert automatisch een privéapparaatcontext nadat het laatste venster van die klasse is vernietigd.

Een toepassing maakt een privéapparaatcontext door eerst de stijl CS_OWNDC vensterklasse op te geven wanneer de stijl wordt geïnitialiseerd lid van de WNDCLASS--structuur en de functie RegisterClass wordt aangeroepen. (Zie Vensterklassenvoor meer informatie over vensterklassen.)

Nadat u een venster met de stijl CS_OWNDC hebt gemaakt, kan een toepassing de GetDC-, GetDCEx-of BeginPaint functie één keer aanroepen om een ingang te verkrijgen die een privéapparaatcontext identificeert. De toepassing kan deze ingang (en de bijbehorende DC) blijven gebruiken totdat het venster dat met deze klasse is gemaakt, wordt verwijderd. Wijzigingen in grafische objecten en hun kenmerken of grafische modi worden bewaard door het systeem totdat het venster wordt verwijderd.

Contexten van vensterapparaten

Een vensterapparaatcontext stelt een toepassing in staat om overal in een venster te tekenen, inclusief het niet-clientgebied. Vensterapparaatcontexten worden doorgaans gebruikt door toepassingen die de WM_NCPAINT- en WM_NCACTIVATE-berichten voor Windows verwerken met aangepaste niet-clientgebieden. Het gebruik van een vensterapparaatcontext wordt niet aanbevolen voor andere doeleinden. Voor meer informatie; zie GetWindowDC-.

Bovenliggende apparaatcontexten

Met een bovenliggende apparaatcontext kan een toepassing de benodigde tijd voor het instellen van de knipregio voor een venster minimaliseren. Een toepassing gebruikt doorgaans bovenliggende apparaatcontexten om het tekenen voor besturingsvensters te versnellen zonder dat hiervoor een privé- of klasseapparaatcontext is vereist. Het systeem gebruikt bijvoorbeeld bovenliggende apparaatcontexten voor drukknop- en bewerkingsbesturingselementen. Bovenliggende apparaatcontexten zijn alleen bedoeld voor gebruik met onderliggende vensters, nooit met pop-upvensters op het hoogste niveau. Voor meer informatie; zie bovenliggende weergaveapparaatcontexten.