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

  1. 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.

  2. 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

Tasks

Creating Desktop Projects By Using Application Wizards

Reference

ATL Project Wizard

Fundamentals of ATL COM Objects

Default ATL Project Configurations

Concepts

Visual C++ Project Types

Programming with ATL and C Run-Time Code