MFC vs. ATL
MFC provides outstanding support for developing Windows applications and DLLs. MFC is especially strong when it comes to developing user interface components. Several different types of views (for example, classes derived from CView)
make it very easy to develop sophisticated user interfaces. The art of using MFC effectively involves understanding the code generated by the Visual C++ AppWizard, the MFC class hierarchy, how to use the Class Wizard, and MS-Windows programming basics.
For GUI-based COM components, MFC is a good choice.
ATL provides an extensible, template-based class hierarchy.
Although ATL does provide some user interface support, its main goal is to support development of lightweight COM components.
ATL is an excellent choice for 1) non-visual COM components or 2) COM components with minimal user interface requirements.
The Active Template Library (ATL) is a set of template-based C++ classes that let you create small, fast Component Object Model (COM) objects. It has special support for key COM features, including stock implementations, dual interfaces, standard COM enumerator interfaces,
connection points, tear-off interfaces, and ActiveX controls.
If you do a lot of ATL programming, you will want to learn more about COM and .NET attributes, which is designed to simplify COM programming.