Because ATL has the advantage of developing COM, I have learned ATL recently. It is also possible to experience the power of template technology, and you can see the use of intelligent pointers.
Unfortunately, when I develop ActiveX control, I don't know how to transfer the structure in an event. Although the definition structure is allowed in the IDL file, the conveyor is transmitted in the event or a compiled warning. I don't know if it is successful.