Using an "application framework" like MFC rests on three key C++ concepts:
If an MFC class doesn't do quite what you want, you derive a new C++ class based on the MFC class. Your derived class inherits all of the member variables and member functions of its base class (and of that class's base class, and so on).
To add new behavior to your derived class, you extend it by adding new member variables and functions. If an inherited member function doesn't do what you want, you override it by defining a new function of the same name. Your overriding function can, if you wish, call the base class function that it overrides, to get the base class functionality in addition to your extended functionality.
MFC programming is a matter of extending and overriding MFC base class behavior. The programming model is:
1. Locate the seat of the MFC functionality that interests you. Source code is provided along with the documentation.
2. Derive a class and modify the base behavior through extension and overriding.
If you choose to practice migrating SHOWDIB, you'll work in three derived classes (AppWizard provides shells of these particular derivations) and four overridden member functions of those classes. AppWizard writes the shell of one of the overrides for you; you do the rest using ClassWizard.