Event Sink Maps
The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.
The latest version of this topic can be found at Event Sink Maps.
When an embedded OLE control fires an event, the control's container receives the event using a mechanism, called an "event sink map," supplied by MFC. This event sink map designates handler functions for each specific event, as well as parameters of those events. For more information on event sink maps, see the article ActiveX Control Containers.
Event Sink Maps
BEGIN_EVENTSINK_MAP | Starts the definition of an event sink map. |
DECLARE_EVENTSINK_MAP | Declares an event sink map. |
END_EVENTSINK_MAP | Ends the definition of an event sink map. |
ON_EVENT | Defines an event handler for a specific event. |
ON_EVENT_RANGE | Defines an event handler for a specific event fired from a set of OLE controls. |
ON_EVENT_REFLECT | Receives events fired by the control before they are handled by the control's container. |
ON_PROPNOTIFY | Defines a handler for handling property notifications from an OLE control. |
ON_PROPNOTIFY_RANGE | Defines a handler for handling property notifications from a set of OLE controls. |
ON_PROPNOTIFY_REFLECT | Receives property notifications sent by the control before they are handled by the control's container. |
BEGIN_EVENTSINK_MAP
Begins the definition of your event sink map.
BEGIN_EVENTSINK_MAP
(theClass, baseClass)
Parameters
theClass
Specifies the name of the control class whose event sink map this is.
baseClass
Specifies the name of the base class of theClass
.
Remarks
In the implementation (.cpp) file that defines the member functions for your class, start the event sink map with the BEGIN_EVENTSINK_MAP
macro, then add macro entries for each event to be notified of, and complete the event sink map with the END_EVENTSINK_MAP
macro.
For more information on event sink maps and OLE control containers, see the article ActiveX Control Containers.
DECLARE_EVENTSINK_MAP
An OLE container can provide an event sink map to specify the events your container will be notified of.
DECLARE_EVENTSINK_MAP
()
Remarks
Use the DECLARE_EVENTSINK_MAP
macro at the end of your class declaration. Then, in the .CPP file that defines the member functions for the class, use the BEGIN_EVENTSINK_MAP
macro, macro entries for each of the events to be notified of, and the END_EVENTSINK_MAP
macro to declare the end of the event sink list.
For more information on event sink maps, see the article ActiveX Control Containers.
END_EVENTSINK_MAP
Ends the definition of your event sink map.
END_EVENTSINK_MAP
()
ON_EVENT
Use the ON_EVENT
macro to define an event handler function for an event fired by an OLE control.
ON_EVENT
(theClass, id, dispid, pfnHandler, vtsParams)
Parameters
theClass
The class to which this event sink map belongs.
id
The control ID of the OLE control.
dispid
The dispatch ID of the event fired by the control.
pfnHandler
Pointer to a member function that handles the event. This function should have a BOOL return type, and parameter types that match the event's parameters (see vtsParams
). The function should return TRUE to indicate the event was handled; otherwise FALSE.
vtsParams
A sequence of VTS_ constants that specifies the types of the parameters for the event. These are the same constants that are used in dispatch map entries such as DISP_FUNCTION
.
Remarks
The vtsParams
argument is a space-separated list of values from the VTS_ constants. One or more of these values separated by spaces (not commas) specifies the function's parameter list. For example:
VTS_I2 VTS_BOOL
specifies a list containing a short integer followed by a BOOL.
For a list of the VTS_ constants, see [EVENT_CUSTOM]--brokenlink--(../Topic/not%20found.md#event_custom).
ON_EVENT_RANGE
Use the ON_EVENT_RANGE
macro to define an event handler function for an event fired by any OLE control having a control ID within a contiguous range of IDs.
ON_EVENT_RANGE
(theClass, idFirst, idLast, dispid, pfnHandler, vtsParams)
Parameters
theClass
The class to which this event sink map belongs.
idFirst
The control ID of the first OLE control in the range.
idLast
The control ID of the last OLE control in the range.
dispid
The dispatch ID of the event fired by the control.
pfnHandler
Pointer to a member function that handles the event. This function should have a BOOL return type, a first parameter of type UINT (for the control ID), and additional parameter types that match the event's parameters (see vtsParams
). The function should return TRUE to indicate the event was handled; otherwise FALSE.
vtsParams
A sequence of VTS_ constants that specifies the types of the parameters for the event. The first constant should be of type VTS_I4, for the control ID. These are the same constants that are used in dispatch map entries such as DISP_FUNCTION
.
Remarks
The vtsParams
argument is a space-separated list of values from the VTS_ constants. One or more of these values separated by spaces (not commas) specifies the function's parameter list. For example:
VTS_I2 VTS_BOOL
specifies a list containing a short integer followed by a BOOL.
For a list of the VTS_ constants, see [EVENT_CUSTOM]--brokenlink--(../Topic/not%20found.md#event_custom).
Example
The following example demonstrates an event handler, for the MouseDown event, implemented for three controls ( IDC_MYCTRL1
through IDC_MYCTRL3
). The event handler function, OnRangeMouseDown
, is declared in the header file of the dialog class ( CMyDlg
) as:
BOOL OnRangeMouseDown(UINT CtlID, short MouseButton, short Shift,
long x, long y);
The code below is defined in the implementation file of the dialog class.
BEGIN_EVENTSINK_MAP(CMyDlg, CDialog)
ON_EVENT_RANGE(CMyDlg, IDC_MYCTRL1, IDC_MYCTRL3, -605, OnRangeMouseDown,
VTS_I4 VTS_I2 VTS_I2 VTS_I4 VTS_I4)
END_EVENTSINK_MAP()
ON_EVENT_REFLECT
The ON_EVENT_REFLECT
macro, when used in the event sink map of an OLE control's wrapper class, receives events fired by the control before they are handled by the control's container.
ON_EVENT_REFLECT
(theClass, dispid, pfnHandler, vtsParams)
Parameters
theClass
The class to which this event sink map belongs.
dispid
The dispatch ID of the event fired by the control.
pfnHandler
Pointer to a member function that handles the event. This function should have a BOOL return type and parameter types that match the event's parameters (see vtsParams
). The function should return TRUE to indicate the event was handled; otherwise FALSE.
vtsParams
A sequence of VTS_ constants that specifies the types of the parameters for the event. These are the same constants that are used in dispatch map entries such as DISP_FUNCTION
.
Remarks
The vtsParams
argument is a space-separated list of values from the VTS_ constants.
One or more of these values separated by spaces (not commas) specifies the function's parameter list. For example:
VTS_I2 VTS_BOOL
specifies a list containing a short integer followed by a BOOL.
For a list of the VTS_ constants, see [EVENT_CUSTOM]--brokenlink--(../Topic/not%20found.md#event_custom).
ON_PROPNOTIFY
Use the ON_PROPNOTIFY
macro to define an event sink map entry for handling property notifications from an OLE control.
ON_PROPNOTIFY
(theClass, id, dispid, pfnRequest, pfnChanged)
Parameters
theClass
The class to which this event sink map belongs.
id
The control ID of the OLE control.
dispid
The dispatch ID of the property involved in the notification.
pfnRequest
Pointer to a member function that handles the OnRequestEdit notification for this property. This function should have a BOOL return type and a BOOL* parameter. This function should set the parameter to TRUE to allow the property to change and FALSE to disallow. The function should return TRUE to indicate the notification was handled; otherwise FALSE.
pfnChanged
Pointer to a member function that handles the OnChanged notification for this property. The function should have a BOOL return type and a UINT parameter. The function should return TRUE to indicate that notification was handled; otherwise FALSE.
Remarks
The vtsParams
argument is a space-separated list of values from the VTS_ constants. One or more of these values separated by spaces (not commas) specifies the function's parameter list. For example:
VTS_I2 VTS_BOOL
specifies a list containing a short integer followed by a BOOL.
For a list of the VTS_ constants, see [EVENT_CUSTOM]--brokenlink--(../Topic/not%20found.md#event_custom).
ON_PROPNOTIFY_RANGE
Use the ON_PROPNOTIFY_RANGE
macro to define an event sink map entry for handling property notifications from any OLE control having a control ID within a contiguous range of IDs.
ON_PROPNOTIFY_RANGE
(theClass, idFirst, idLast, dispid, pfnRequest, pfnChanged)
Parameters
theClass
The class to which this event sink map belongs.
idFirst
The control ID of the first OLE control in the range.
idLast
The control ID of the last OLE control in the range.
dispid
The dispatch ID of the property involved in the notification.
pfnRequest
Pointer to a member function that handles the OnRequestEdit notification for this property. This function should have a BOOL return type and UINT and BOOL* parameters. The function should set the parameter to TRUE to allow the property to change and FALSE to disallow. The function should return TRUE to indicate that notification was handled; otherwise FALSE.
pfnChanged
Pointer to a member function that handles the OnChanged notification for this property. The function should have a BOOL return type and a UINT parameter. The function should return TRUE to indicate that notification was handled; otherwise FALSE.
ON_PROPNOTIFY_REFLECT
The ON_PROPNOTIFY_REFLECT
macro, when used in the event sink map of an OLE control's wrapper class, receives property notifications sent by the control before they are handled by the control's container.
ON_PROPNOTIFY_REFLECT
(theClass, dispid, pfnRequest, pfnChanged)
Parameters
theClass
The class to which this event sink map belongs.
dispid
The dispatch ID of the property involved in the notification.
pfnRequest
Pointer to a member function that handles the OnRequestEdit notification for this property. This function should have a BOOL return type and a BOOL* parameter. This function should set the parameter to TRUE to allow the property to change and FALSE to disallow. The function should return TRUE to indicate the notification was handled; otherwise FALSE.
pfnChanged
Pointer to a member function that handles the OnChanged notification for this property. The function should have a BOOL return type and no parameters. The function should return TRUE to indicate the notification was handled; otherwise FALSE.