I think the trick to understanding this is to understand that, when a DLL is registered as a component, MTS subtitutes it's own Class ID for the class IDs that were put into the registry by VB when the project was compiled.
When an program uses CreateObject or CreateInstance, the class-ID is looked up and run-time, so the MTS class ID is found and MTS gets the instantiation call. MTS then instantiates a "false front" for the object (the object context). The actual object is only instantiated when a method or property is first referenced. When the object is supposedly destroyed by the calling application, only the false front is initially destroyed. The actual object is kept in memory for x minutes (or indefinitely, if you wish) as a pooled object, and is used to "back-end" the next "false front" that needs an instance of that object.
If you create an object with the NEW keyword, I believe the class code is located ased on the class ID that was obtained when the Project Reference was created, which is the compile-time class ID of the class, and not the MTS-substituted class ID. Thus, NEW circumvents MTS's attempt to intercept the instantiation request, causing the DLL to be laoded into the memory space of your code instead of causing MTS to load the DLL it into it's memory space (MTXAS.EXE, I think).
Another explanation that I have read is that MTS wraps your ActiveX.DLL project with MTS code, effectively changing your ActiveX DLL into an ActiveX EXE, and also adding methods and properties for transaction control and hooks into MTS that give MTS control over the object. Early binding methods use the class IDs of the compiled DLL, while late binding methods use the class IDs of the EXE wrapper. Unless you reference the EXE, any instantiated objects are created outside of MTS's control.
While these two explanations differ in the mechanics (I do not know which is most accurate, the implication is the same. "NEW" circumvents MTS.
Can someone point us to a definitive explanation of the mechanics what happens when a DLL is registered as a component?
Larry
Larryh@ecn.ab.ca