This documentation is archived and is not being maintained.


Creates an event source.

[ event_source(
   optimize=[speed | size],
   decorate=[true | false]
) ]


An enumeration of one of the following values:
  • native for unmanaged C/C++ code (default for unmanaged classes).
  • com for COM code. You must use coclass when type=com. This value requires that you include the following header files:
       #define _ATL_ATTRIBUTES
       #include <atlbase.h>
       #include <atlcom.h>
  • managed for Managed Extensions for C++ code (default for managed classes).
When type is native, you can specify optimize=size, to indicate that there is 4 bytes of storage (minimum) for all events in a class or optimize=speed (the default) to indicate that there is 4 * (# of events) bytes of storage.
When type is native, you can specify decorate=false, to indicate that the expanded name in the merged (.mrg) file should not include the enclosing class name. /Fx lets you generate .mrg files. decorate=false, which is the default, results in fully-qualified type names in the merged file.

Attribute Context

Applies to class, struct
Repeatable No
Required attributes coclass when type=com
Invalid attributes None

For more information, see Attribute Contexts.


The event_source C++ attribute specifies that the class or structure to which it is applied will be an event source, using the Visual C++ unified event model.

event_source is used in conjunction with the event_receiver attribute and the __event keyword. Use event_receiver to create event receivers. Use __event on methods within the event source to specify those methods as events.

The default for type is native unless the class is managed, in which case the default is managed.


The topic Event Handling in Visual C++ contains code examples using event handling attributes and keywords.

See Also

Compiler Attributes | event_receiver | __event | __hook | __unhook | Class Attributes | Attributes Samples