Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
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.