Distinguishing between ‘Print’ from ‘Print Preview’, and ‘Print’ from a menu or tool bar command.

If your print and print preview works with user defined options it may be required for you to
distinguish the print call from a Print Preview screen against that from menu or toolbar. That
way you can avoid asking the user for options again in the case of a Print from Print Preview.

Here is a simple solution. When you hit the Print button from a preview screen, MFC generates
a message ID – ID_FILE_PRINT which will be mapped to CView OnFilePrint() in your message map when
you autogenerate the project. If you go into your resource menu (provided you have an auto generated
menu resource) and check the ID of the menu item Print (under File menu) you will see it also has
an ID – ID_FILE_PRINT. You need to change this to something else say ID_FILE_PRINTX, then go into
Print menu item and change it to ID_FILE_PRINTX too. Overload both messages in your view as


ON_COMMAND(ID_FILE_PRINT, OnFilePrint)
ON_COMMAND(ID_FILE_PRINTX, OnFilePrintFromMenuOrToolBar)

Now you know which is which.

More by Author

Get the Free Newsletter!

Subscribe to Developer Insider for top news, trends & analysis

Must Read