CScrollView not clear when using non-TWIPS Map Modes
Posted on 1998-08-13
I'm using Visual C++ 5.0 and am working with an SDI project.
I had programed a long CScrollView output in the MM_TWIPS map mode. My output to the screen was crisp and looked very good no matter how many times I scrolled it up or down. I ran into a problem using the MM_TWIPS mapmode when I tried to set the vertical size of the view to larger than a value of 32K - I assume because the variable which sets the scrollsizes (the SetScrollSize function in CScrollView) takes int values which are limited to around that size. There are 1440 TWIPS/Inch so this limits you to a vertical size of the view of about 22 inches or so. (which would be the value of the size of the int variable 32K / 1440) I want to have my outputs be longer in vertical size than this so I decided to switch to a map mode which would allow me to address larger vertical sizes (i.e., a map mode which was lower in resolution. I tried MM_HIENGLISH and MM_LOENGLISH and both worked well to solve the problem - however a new problem appeared which was not present with MM_TWIPS.
The quality of the screen outputs which were so clean despite scrolling up and down in TWIPS mode got screwy in any of the other modes (HIENGLISH, LOENGLISH, HIMETRIC, LOMETRIC). What happens is that the text output to the screen seems to compress some lines and expand others. Worse still - when you scroll up and down in the outpute created in these non-TWIPS modes, the act of scrolling corrupts the image so that what was reasonably drawn before is now all jumbled. Forcing the window to Invalidate (and thus redraw) each time the scroll is moved does make the output look pristine - however this is not a good solution as the 10,000 invalidations make the use of the scrollbars difficult (scrolling looses all of its smoothness when you do this).
Can someone tell me 1) why the screen output is breaking up upon scrolling in non-TWIPS mapmodes AND 2) can you tell me a way to keep this from happening which doesn't involve constant forced invalidation of the view?