Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
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.