The MFC framework, and therefore any MFC application, has a very rational structure. MFC classes encapsulate key abstractions: the application as a whole, documents, frame windows, views of a document through a frame window's client area, message maps, dialog boxes, and GDI objects.
A running MFC application is a collection of communicating objects based on these abstractions. An object is essentially a different kind of code module whose functions you can call and whose variables you can access (unless they're protected or private). There's still a WinMain function that registers window classes and operates a message pump, although WinMain is hidden within MFC and designed so you don't normally have to touch it. Windows-based messages are still sent to windows, but the messages are handled differently. And MFC provides default (but sometimes very complete) implementations of common menu commands, such as File Open, and clean protocols for implementing other commands, such as the clipboard commands on the Edit menu.
For an overview of MFC's structure, see the hierarchy chart in the Class Library Reference or your C++ documentation.