MFC is a "skeleton" application (with some flesh already on the bones). To customize this skeleton with your own code, you must learn where to attach your code to the framework. Perhaps you're familiar with the notion of "pressure points" on the human body; if a person is bleeding, you locate the appropriate pressure point, apply pressure there, and the bleeding stops. By analogy, MFC has pressure points too.
Every bit of functionality already built into MFC is located in one or more member functions of one or more classes. To modify the default functionality, you must locate the appropriate function(s), override them in a derived class, and supply your own functionality.
For example, if you want to do your own input/output rather than relying on MFC serialization, you can override the framework in several ways, as described in Use Document Serialization for Input/Output.Determining which functions to override can be difficult. The better you understand how MFC does what it does, how each class works, and what the major subsystems and architectures in MFC are, the easier it is to make this determination. So take the time to experiment with MFC. Read the documentation. Learn to browse the sources and use the wizards. Study the source files. And talk to other MFC programmers, who are rapidly building up the lore of MFC programming. Soon you'll be writing successful MFC applications and making your own contributions to MFC lore. And you'll be using the C++ API for Windows.