The COM support in Microsoft Visual C++ allows developers to create a variety of COM objects, OLE Automation servers, and ActiveX controls.
On the COM client side ATL provides smart pointers that deal with COM reference counting.
COM objects can also be created with Microsoft Foundation Classes (MFC), but this leads to larger binaries that require support DLLs.
[3] ATL, on the other hand, is a more lightweight alternative in situations where the graphical user interface parts of MFC are not required.
[8][9] In ATL version 7 (Visual Studio 2003), which directly succeeded version 3 (Visual Studio 6.0), a number of MFC classes like CString were made available in ATL, or more precisely moved to an ATLMFC common layer which is shared by both libraries.