Virtual Developer Workshop: Containerized Development with Docker
Generally the sample demonstrates different ways to obtain or create proper DC and use BitBlt - StretchBlt functions.
CImageWnd window covers CView derived class window. CImageWnd contains a copy (mirror) of CView derived class window bitmap to draw. CImageWnd window becomes transparent when magnifying glass is inactive and draws a "lens" over the bitmap when active. The "lens" is a small zoom window. Magnifying Glass doesn't depend on a view contents. It is easy to modify CMgnView::OnDraw or CMgnView::OnEraseBkgnd and Magnifying Glass still will work with another contents.
To activate or deactivate magnifying glass - press button on a toolbar.
To magnify a portion of a view - activate magnifying glass, press left mouse button and move "lens" around a view.
To change magnifying glass size, shape or zoom - activate magnifying and click a view with right mouse button. It is possible to create several views just use file - new command. Note that for each view magnify glass keeps its own properties.
It is easy enough to make a "lens" astigmatic (cylinder) or add another "optical effects".
I couldn't remove some "optical side effects". When magnifying glass is slowly moved from outside a frame inside it over a border you see a "diffraction grid".