New users of this class will have to visit Robin’s article for the relevant
download material and then update the .cpp/.h files with the versions provided in this
article. Old users of the class can just replace their existing .cpp/.h files with these.
Overview of New Functionality
This is an update of the nice class provided in Robin’s article and includes the following features:
- The print preview will now never show empty preview pages unless the user views 2 pages of
output when only 1 is available. - Print preview will now respond to WM_MOUSEWHEEL messages appropriately. In “zoom out” mode, it
will scroll you through the pages of output. In “zoom in” mode, it will scroll the output page up/down.
Implementation Details
For the mouse wheel to work correctly, you will have to override your
CMainFrame::PreTranslateMessage() function as follows:
BOOL CMainFrame::PreTranslateMessage(MSG* pMsg) { // TODO: Add your specialized code here and/or call the base class if (pMsg->message == WM_MOUSEWHEEL) { CView *pView = GetActiveView() ; if (pView != NULL) pView->SendMessage(WM_MOUSEWHEEL, pMsg->wParam, pMsg->lParam) ; } // call the base class here }
This is required because in print preview mode, the WM_MOUSEWHEEL messages go to
the CDialogBar in the window and not directly to the view. This was the only way
I could find of easily getting these messages to the CMyPreviewView window.