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 primary goal is to support development of lightweight COM components.
ATL is an excellent choice for nonvisual COM components or COM components with minimal user interface requirements.