OWL's TScroller provides one such opportunity. In AutoOrg mode, the TScroller calls SetViewportOrg in it's BeginView member function, which is called before Paint is called. Because both functions can be used safely together, you can let TScroller adjust the Viewport origin to facilitate scrolling, and you can adjust the Window origin to facilitate alternative coordinate systems. For the 'constrained' modes, all you are allowed is to change the origin of the logical system using either SetWindowOrg or SetViewportOrg . Extents Extents are a little trickier, because how they are interpreted depends on the mapping mode.
Windows make no adjustment.
Therefore, you can have very different coordinate systems in the two axes. SetWindowExt and SetViewportExt are used as a team. These two functions set some internal members in the DC, which are used to map points between coordinate systems. As such, each is essentially meaningless taken alone. Let's say that I call SetViewportExt for a display device with the parameters 100,50.