What is ATL
What is ATL ?
why and when should I learn it?
Where it is used and why it is used ?
Active Template Library - Wikipedia, the free encyclopedia, ATL Concepts
Originally Posted by freiza
Because you want/need to develop COM/OLE objects and you don't want to write N versions of QueryInterface/interface registration code or other code that is 99% identical project to project
In the development of COM and OLE objects
Same reason you use any other wrapper library, so you don't have to write all the boilerplate stuff yourself
If you've never heard of COM or OLE, you don't need it. If you don't use C++ or a non-express version of Visual Studio, you can't use it. If you pass both of those tests, check out the tutorials on MSDN
As adeyblue said you can create COM and OLE objects with it and it is quite nice if you have ever tried to write one of those from scratch. It is fairly simple to use and pick up and most of my experience with it has been turning library A or DLL A into a COM object. Note that COM objects created in ATL are binary compatible with managed .NET code as well as unmanaged code since COM is both language and managed / unmanaged agnostic. COM is like C++ but is not C++. C++ is a language whereas COM is a binary standard created by Microsoft. The need for COM is diminishing somewhat with C++ / CLI but it is still a widely used technology. All of Direct3D is utilizes COM as well as a host of other Windows-centric technologies.
Last edited by VirtualAce; 05-18-2012 at 06:17 PM.
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.