Dela via


Enhetskontexter

En enhetskontext är en Windows-datastruktur som innehåller information om ritningsattributen för en enhet, till exempel en bildskärm eller en skrivare. Alla ritningsanrop görs via ett enhetskontextobjekt som kapslar in Windows-API:erna för ritlinjer, former och text. Enhetskontexter tillåter enhetsoberoende ritning i Windows. Enhetskontexter kan användas för att rita till skärmen, till skrivaren eller till en metafil.

CPaintDC-objekt kapslar in det vanliga Windows-mönstret genom att anropa BeginPaint-funktionen, rita i enhetskontexten och sedan anropa EndPaint-funktionen. Konstruktorn CPaintDC anropar BeginPaint dig och destruktören anropar EndPaint. Den förenklade processen är att skapa CDC-objektet , rita och sedan förstöra CDC objektet. I ramverket automatiseras mycket av även den här processen. I synnerhet skickas funktionen OnDraw en CPaintDC redan förberedd (via OnPrepareDC) och du drar helt enkelt in i den. Ramverket förstör det och den underliggande enhetskontexten släpps till Windows när anropet till din OnDraw-funktion har avslutats.

CClientDC-objekt kapslar in arbete med en enhetskontext som endast representerar klientområdet i ett fönster. Konstruktorn CClientDC anropar GetDC funktionen och destruktören anropar ReleaseDC funktionen. CWindowDC-objekt kapslar in en enhetskontext som representerar hela fönstret, inklusive dess ram.

CMetaFileDC-objekt kapslar in ritoperationer i en windowsmetafil. Till skillnad från det som skickas CPaintDC till OnDrawmåste du i det här fallet anropa OnPrepareDC själv.

Musritning

De flesta ritningar i ett ramverksprogram – och därmed det mesta enhetskontextarbetet – görs i vyns OnDraw medlemsfunktion. Du kan dock fortfarande använda objekt med enhetskontext för andra ändamål. Om du till exempel vill ge spårningsfeedback för musrörelser i en vy måste du rita direkt i vyn utan att vänta på att OnDraw ska anropas.

I så fall kan du använda ett CClientDC-enhetskontextobjekt för att rita direkt i vyn.

Vad vill du veta mer om?

Se även

Fönsterobjekt