Making an ATL Object Noncreatable
You can change the attributes of an ATL-based COM object so that a client cannot directly create the object. In this case, the object would be returned through a method call on another object rather than created directly.
To make an object noncreatable
Remove the OBJECT_ENTRY_AUTO for the object. If you want the object to be noncreatable but the control to be registered, replace OBJECT_ENTRY_AUTO with OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO.
Add the noncreatable attribute to the coclass in the .idl file. For example:
[uuid(A1992E3D-3CF0-11D0-826F-00A0C90F2851), helpstring("MyObject"), noncreatable] coclass MyObject { [default] interface IMyInterface; }
See also
ATL Project Wizard
C++ project types in Visual Studio
Programming with ATL and C Run-Time Code
Fundamentals of ATL COM Objects
Default ATL Project Configurations