Print Preview Enhancements

CodeGuru content and product recommendations are editorially independent. We may make money when you click on links to our partners. Learn More.

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.

Downloads

Download source – 6 Kb

More by Author

Get the Free Newsletter!

Subscribe to Developer Insider for top news, trends & analysis

Must Read