Visual C++ 6 Unleashed

Visual C++ 6 Unleashed

By Mickey Williams and David Bennett

Message Handling in MFC

MFC provides a framework for handling windows messages that can be much easier to work with than the web of switches and ifs that are used in traditional Windows programs to control the handling of messages. This is based on the capability of classes derived from CCmdTarget of having their own message maps. MFC uses the message maps of your classes to decide how any given message should be handled, allowing you to take full advantage of the benefits of the C++ language to encapsulate functionality in your classes so that other classes derived from them don't have to reinvent the wheel.

To further expand on reusability, MFC provides default handlers for a wide range of commands used in most Windows applications. Most of the commands that have default handlers are also included in the default menus generated by AppWizard. The following are menu commands that have default handlers in MFC:

  • File menu commands: New, Open, Close, Save, Save As, Page Setup, Print Setup, Print, Print Preview, Exit, and the most recently used files list.
  • Edit menu commands: Clear, Clear All, Copy, Cut, Find, Paste, Repeat, Replace, Select All, Undo, and Redo.
  • View menu commands: Toolbar and Status Bar.
  • Window menu commands: New, Arrange, Cascade, Tile Horizontal, Tile Vertical, and Split.
  • Help menu commands: Index, Using Help, and About.

The menus created by AppWizard generate messages for the standard commands defined in AFXRES.H. For example, the File | New menu item generates a message with the command ID of ID_FILE_NEW. The other standard commands are similarly named, with ID_, the menu name, and the command name.

If you wish to perform one of these standard actions, you can send one of the predefined command messages from anywhere in your application that will be handled by MFC's default handlers. Of course, you can also implement your own handlers for these commands, but you will explore that later. For more information on the default commands, see Technical Note 22 (TN022) in the online help.

+ Share This