Microsoft Foundation Classes (MFC) is a set of wrapper classes around the Win32 API to give an object-oriented interface to Windows. It basically allows you to program Windows apps in a style similar to how one writes programs in Java. It takes care of a lot of low-level things and keeps you from having to explicitly make function calls with like 12 parameters at a time and such like you would do in the Win32 API. Also, if you don't like using pointers you'll hate the Win32 API because
everything is done through pointers and pointers to pointers.
Basically, Win32API is a C interface to Windows while MFC is a C++ interface. You hae more control with the Win32API, but your programs are better structured and development time is usually shorter if you have a good knowledge of MFC.
The MFC headers and libraries come standard with the Visual C++ compiler. You can actually download the compiler for free from Microsoft's website, but you'll have to pay the $1,000+ for the package if you want the text editor, debugger, and the ability to compile and link with the touch of a button instead of using makefiles and command-line processing.
I can't say much about MFC, because I always use the C-based API whenever I develop software for Windows (too lazy to learn MFC and I'm scared it will negatively affect performance, since all I like to write in Windows is games... always have to
#define WIN32_LEAN_AND_MEAN ).
