Visual C++ 6 Unleashed

Visual C++ 6 Unleashed

By MICKEY WILLIAMS and David Bennett

The CCmdTarget Class

All window classes under MFC that accept user input, including OLE classes, are derived at some level from CCmdTarget. This class is used as a base class for so many other classes because it allows your class to handle Windows messages.

Windows programs are based on an event-driven model. This means that they run in the traditional sense for only a short time at startup, then spend the rest of their lives waiting around for messages, reacting to them, and waiting again for more messages. These messages can be generated by simply moving the mouse, clicking on a button, or selecting a menu command.

In C programs, these messages were generally handled by large switch blocks involving case statements for each message that your application wanted to process. Because the processing of these messages was often dependent on several other variables, most applications ended up with a massive web of nested switch and if blocks.

To remedy this situation, and to allow you to use the power of C++ freely, MFC has implemented message maps to allow your classes to handle Windows messages in a much cleaner fashion. Any class derived from CCmdTarget may have its own message map, allowing each class to handle the messages it is interested in however it chooses, while leaving other messages to be handled higher in the class hierarchy.

Working with messages is one of the most important things that you will do in Windows programming (so important that it has its own chapter—Chapter 3, "MFC Message Handling Mechanism" ). For now, let's move on to the base class of CCmdTarget , CObject .

Share ThisShare This

Informit Network