Creates an event source.
[ event_source( type, optimize=[speed | size], decorate=[true | false] ) ]
Parameter
- type
- 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).
- optimize
- 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.
- decorate
- 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.
Remarks
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.
Example
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