Megosztás:


Eszközkörnyezetek

Az eszközkörnyezet olyan Windows-adatstruktúra, amely információkat tartalmaz egy eszköz, például egy kijelző vagy nyomtató rajzattribútumairól. Minden rajzhívás egy eszközkörnyezeti objektumon keresztül történik, amely a Windows API-kat foglalja magában a rajzvonalakhoz, alakzatokhoz és szövegekhez. Az eszközkörnyezetek lehetővé teszik az eszközfüggetlen rajzot a Windowsban. Az eszközkörnyezetek segítségével rajzolhat a képernyőre, a nyomtatóra vagy egy metafájlra.

A CPaintDC objektumok a Windows általános eljárását jelenítik meg: meghívják a BeginPaint függvényt, majd rajzolnak az eszközkörnyezetben, végül meghívják a EndPaint függvényt. A CPaintDC konstruktor meghívja a BeginPaint függvényt, a destruktor pedig meghívja a EndPaint függvényt. Az egyszerűsített folyamat az, hogy létrehozzuk a CDC-objektumot, rajzolunk, majd megsemmisítjük az CDC objektumot. A keretrendszerben még ennek a folyamatnak is nagy része automatizált. Különösen a OnDraw függvény kap egy CPaintDC-t, amelyet már előkészítettek (c2 segítségével), és önnek egyszerűen bele kell rajzolnia. A keretrendszer megsemmisíti, és a mögöttes eszközkörnyezet a függvény hívásából való visszatéréskor megjelenik a Windowsban OnDraw .

A CClientDC-objektumok olyan eszközkörnyezettel dolgoznak, amely csak az ablak ügyfélterületét jelöli. A CClientDC konstruktor meghívja a függvényt GetDC , a destruktor pedig a függvényt ReleaseDC . A CWindowDC-objektumok olyan eszközkörnyezetet ágyaznak be, amely az egész ablakot, beleértve annak keretét is.

A CMetaFileDC-objektumok belefoglalják a rajzot egy Windows-metafájlba. Az CPaintDC paraméterhez képest, ebben az esetben saját magának kell meghívnia az OnDraw.

Egérrajz

A legtöbb rajz egy keretrendszerben – és így a legtöbb munka az eszközkörnyezetben – a nézet OnDraw tagfüggvényében történik. Az eszközkörnyezeti objektumokat azonban továbbra is használhatja más célokra. Ha például nyomon követési visszajelzést szeretne adni az egér mozgásához egy nézetben, közvetlenül a nézetbe kell rajzolnia anélkül, hogy várnia kellene a meghívásra OnDraw .

Ilyen esetben egy CClientDC eszköz-környezet objektum használatával közvetlenül a nézetbe rajzolhat.

Mit szeretne többet megtudni

Lásd még

Ablakobjektumok