Introduction
Microsoft has developed a set of template-based C++ classes known as the Active Template Library(ATL). These are used to simplify the Component Object Model(COM) objects. Microsoft Visual C++ supports the COM, allowing developers to create a variety of COM Objects, ActiveX Controls, and OLE(Object Linking and Embedding) Automation. This library heavily uses a Continuously Recurring Template Pattern.

In this article, we will discuss one of the libraries in the UI Support Class called the IOleObjectImpl.
Features of ATL
ATL stands for Active Template Library. It is a template-based set of C++ classes. You can easily create small and fast COM objects. Here COM stands for Component Object Model. ATL supports key features of COM. Those features include stock implementations of IUnknown, IDispatch, IClassFactory, and IClassFactory2. The features also include the following:-
- dual interfaces,
- connection points,
- tear-off interfaces,
- standard COM enumerator interfaces and
-
ActiveX controls.
ATL code is used to create different objects. They are as follows:-
- single-threaded objects
- free-threaded model objects
- apartment-model objects
- both apartment model and free-threaded objects