ActiveX components and other similar OLE-based COM objects are initialized differently from DirectX. DirectX has it's own Create*Device function that creates the initial "device" COM object, which you then use to create other COM objects for handling resources.
In order to use ActiveX controls, I think you would need to implement a COM object yourself, which is bound to your window, and provides specific interfaces to the ActiveX objects.
I made my graphics engine as an ActiveX component in C++ because it had a ready to use MFC template in Visual Studio.
Maybe I can just make a multi purpose framework and use it for everything non console like Visual Basic 6 did but static.