Eszközkonfliktusok
Az eszköz kontextus egy Windows adatstruktúra, amely információkat tartalmaz a rajzeszközök, például a kijelző vagy a nyomtató attribútumairól. Minden befejezett rajz egy olyan eszközkontakt objektum használatával, amely a Windows API-t magába foglalja vonalak, alakzatok és szövegek rajzolásához. Az eszköz kontextusa független, lehetővé teszi a Windows rendszerben történő létrehozását. Az eszköz kontextusai használhatók a képernyőre, a nyomtatóra vagy a metafájlra történő rajzoláshoz.
A CPaintDC objektumok befoglalják a generikus Windows-ot, amikor a BeginPaint funkciót hívják. majd rajzolja a készülék kontextusában, majd hívja az EndPaint funkciót. A Constructor kéri a BeginPaint ``CPaintDC-t automatikusan és hívja az EndPaint destruort. Egyszerű CDC objektum létrehozásának folyamata. fog épülni, majd törli a CDC objektumot. A platformon sokan még ez a folyamat is automatizált. Különösen azért, hogy az OnDraw-funkciók átkerüljenek a már elkészített CPaintDC-re (OnPrepareDC használatával), és csak azt kell ábrázolni. A platform elpusztítja, és a fő eszköz kontextus megjelenik a Windows rendszerben, amikor visszatér az OnDraw funkcióhívásból.
A CClientDC objektumok az eszköz kontextusába foglalják be a munkát, ami csak az ablak ügyfélterületét jelenti. A CDCientDC konstruktor felhívja a GetDC funkciót, és a destructor felhívja a ReleaseDC funkciót. A CWindowDC objektumok olyan eszköz kontextust foglalnak magukban, amely az összes ablakot ábrázolja, beleértve annak keretét.
A CMetaFileDC objektumok beillesztik a rajzot a Windows metafájába. A CPaintDC-tól eltérően. átadta az OnDraw-nak. Ebben az esetben az adatoknál fel kell hívnia az OnPrepareDC módszert.
A legtöbbet a programban strukturálisan és így az eszköz kontextus összes munkáját hozza létre - ez az OnDraw benyújtásának tagfüggvényében történik. Az eszköz kontextusobjektumait azonban egyéb célokra is használhatja. Például egy nyomkövetési válasz megadása az egér mozgatásához egy nézetben, anélkül, hogy az OnDraw-ra várna, közvetlenül a nézetben kell rajzolni. kinevezéssel.
Ebben az esetben a CClientDC eszköz környezetobjektuma közvetlenül a nézetben húzható meg.