Platforms to show: All Mac Windows Linux Cross-Platform

Back to WinPointerEventsMBS class.

WinPointerEventsMBS.Gesture(info as WinGestureInfoMBS) as boolean

Type Topic Plugin Version macOS Windows Linux iOS Targets
event Windows MBS Win Plugin 16.2 ❌ No ✅ Yes ❌ No ❌ No
Passes information about a gesture.

Return true, if you processed the message, else false.

Some examples using this event:

WinPointerEventsMBS.GestureNotify

Type Topic Plugin Version macOS Windows Linux iOS Targets
event Windows MBS Win Plugin 16.2 ❌ No ✅ Yes ❌ No ❌ No
Gives you a chance to set the gesture configuration.

When the GestureNotify event is received, the application can use SetGestureConfig to specify the gestures to receive.

Some examples using this event:

WinPointerEventsMBS.PointerDeviceChange(Change as Integer, Param as Integer) as boolean

Type Topic Plugin Version macOS Windows Linux iOS Targets
event Windows MBS Win Plugin 16.2 ❌ No ✅ Yes ❌ No ❌ No
Sent to a window when there is a change in the settings of a monitor that has a digitizer attached to it.

This message contains information regarding the scaling of the display mode.
See kDeviceChange* constants.

Some examples using this event:

WinPointerEventsMBS.PointerDeviceInRange(Param1 as Integer, Param2 as Integer) as boolean

Type Topic Plugin Version macOS Windows Linux iOS Targets
event Windows MBS Win Plugin 16.2 ❌ No ✅ Yes ❌ No ❌ No
Sent to a window when a pointer device is detected within range of an input digitizer.

This message contains information regarding the device and its proximity.

If the application processes this message, it should return true, else false.

Some examples using this event:

WinPointerEventsMBS.PointerDeviceOutOfRange(Param1 as Integer, Param2 as Integer) as boolean

Type Topic Plugin Version macOS Windows Linux iOS Targets
event Windows MBS Win Plugin 16.2 ❌ No ✅ Yes ❌ No ❌ No
Sent to a window when a pointer device has departed the range of an input digitizer.

This message contains information regarding the device and its proximity.

If the application processes this message, it should return true, else false.

Some examples using this event:

WinPointerEventsMBS.PointerDown(PointerID as Integer, Flags as Integer, X as Integer, Y as Integer, info as WinPointerInfoMBS) as boolean

Type Topic Plugin Version macOS Windows Linux iOS Targets
event Windows MBS Win Plugin 16.2 ❌ No ✅ Yes ❌ No ❌ No
Posted when a pointer makes contact over the client area of a window.

This input message targets the window over which the pointer makes contact, and the pointer is implicitly captured to the window so that the window continues to receive input for the pointer until it breaks contact.

We provide pointer ID, flags, X and Y.

BitwiseAnd(flags, WinPointerInfoMBS.kFlagNew) <> 0A flag that indicates whether this message represents the first input generated by a new pointer.
BitwiseAnd(flags, WinPointerInfoMBS.kFlagInRange) <> 0A flag that indicates whether this message was generated by a pointer during its lifetime. This flag is not set on messages that indicate that the pointer has left detection range
BitwiseAnd(flags, WinPointerInfoMBS.kFlagInContact) <> 0A flag that indicates whether this message was generated by a pointer that is in contact with the window surface. This flag is not set on messages that indicate a hovering pointer.
BitwiseAnd(flags, WinPointerInfoMBS.kFlagPrimary) <> 0Indicates that this pointer has been designated as primary.
BitwiseAnd(flags, WinPointerInfoMBS.kFlagFirstButton) <> 0A flag that indicates whether there is a primary action. This is analogous to a mouse left button down. A touch pointer will have this set when it is in contact with the digitizer surface. A pen pointer will have this set when it is in contact with the digitizer surface with no buttons pressed.
BitwiseAnd(flags, WinPointerInfoMBS.kFlagSecondButton) <> 0A flag that indicates whether there is a secondary action. This is analogous to a mouse right button down. A pen pointer will have this set when it is in contact with the digitizer surface with the pen barrel button pressed.
BitwiseAnd(flags, WinPointerInfoMBS.kFlagThirdButton) <> 0A flag that indicates whether there are one or more tertiary actions based on the pointer type; applications that wish to respond to tertiary actions must retrieve information specific to the pointer type to determine which tertiary buttons are pressed. For example, an application can determine the buttons states of a pen by calling GetPointerPenInfo and examining the flags that specify button states.
BitwiseAnd(flags, WinPointerInfoMBS.kFlagFourthButton) <> 0A flag that indicates whether the specified pointer took fourth action. Applications that wish to respond to fourth actions must retrieve information specific to the pointer type to determine if the first extended mouse (XButton1) button is pressed.
BitwiseAnd(flags, WinPointerInfoMBS.kFlagFifthButton) <> 0A flag that indicates whether the specified pointer took fifth action. Applications that wish to respond to fifth actions must retrieve information specific to the pointer type to determine if the second extended mouse (XButton2) button is pressed.

Note:
A hovering pointer has none of the button flags set. This is analogous to a mouse move with no mouse buttons down. An application can determine the buttons states of a hovering pen, for example, by calling GetPointerPenInfo and examining the flags that specify button states.

Note:
Because the pointer may make contact with the device over a non-trivial area, this point location may be a simplification of a more complex pointer area. Whenever possible, an application should use the complete pointer area information instead of the point location.

If an application processes this message, it should return true, else false.

Important When a window loses capture of a pointer and it receives the PointerCaptureChanged notification, it typically will not receive any further notifications. For this reason, it is important that you not make any assumptions based on evenly paired PointerDown/PointerUp or PointerEnter/PointerLeave notifications.

Each pointer has a unique pointer identifier during its lifetime. The lifetime of a pointer begins when it is first detected.
A PointerEnter event is generated if a hovering pointer is detected. A PointerDown event followed by a PointerEnter event is generated if a non-hovering pointer is detected.
During its lifetime, a pointer may generate a series of PointerUpdate events while it is hovering or in contact.
The lifetime of a pointer ends when it is no longer detected. This generates a PointerLeave event.
When a pointer is aborted, kFlagCanceled is set.
A WM_POINTERLEAVE message may also be generated when a non-captured pointer moves outside the bounds of a window.


To convert the lParam parameter to a POINTS structure, use the MAKEPOINTS macro.
To retrieve further information associated with the message, use the GetPointerInfo function.
To determine the keyboard modifier key states associated with this message, use the GetKeyState function. For example, to detect that the ALT key was pressed, check whether GetKeyState(VK_MENU) < 0.
Note that if the application does not process this message, DefWindowProc may generate one or more WM_GESTURE messages if the sequence of input from this and, possibly, other pointers is recognized as a gesture. If a gesture is not recognized, DefWindowProc may generate mouse input.
If an application selectively consumes some pointer input and passes the rest to DefWindowProc, the resulting behavior is undefined.
When a window loses capture of a pointer and receives the WM_POINTERCAPTURECHANGED notification, it will typically not receive any further notifications. Therefore, it is important that a window does not make any assumptions of its pointer status, regardless of whether it receives evenly paired DOWN / UP or ENTER / LEAVE notifications.

Some examples using this event:

WinPointerEventsMBS.PointerEnter(PointerID as Integer, Flags as Integer, X as Integer, Y as Integer, info as WinPointerInfoMBS) as boolean

Type Topic Plugin Version macOS Windows Linux iOS Targets
event Windows MBS Win Plugin 16.2 ❌ No ✅ Yes ❌ No ❌ No
Sent to a window when a new pointer enters detection range over the window (hover) or when an existing pointer moves within the boundaries of the window.

We provide Pointer ID, Flags, X and Y.

BitwiseAnd(flags, WinPointerInfoMBS.kFlagNew) <> 0Indicates whether this message is the first message generated by a new pointer entering detection range (hover).
BitwiseAnd(flags, WinPointerInfoMBS.kFlagInRange) <> 0Indicates whether this message was generated by a pointer that has not left detection range. This flag is always set for PointerEnter messages.
BitwiseAnd(flags, WinPointerInfoMBS.kFlagInContact) <> 0A flag that indicates whether this message was generated by a pointer that is in contact. This flag is not set for a pointer in detection range (hover).

Contains the point location of the pointer.
Note:
Because the pointer may make contact with the device over a non-trivial area, this point location may be a simplification of a more complex pointer area. Whenever possible, an application should use the complete pointer area information instead of the point location.

If an application processes this message, it should return true, else false.

The PointerEnter notification can be used by a window to provide feedback to the user while the pointer is over its surface or to otherwise react to the presence of a pointer over its surface.
This notification is only sent to the window that is receiving input for the pointer. The following table lists some of the situations in which this notification is sent.

ActionFlags SetNotifications Sent To
A new pointer enters detection range (hover).kFlagNew and kFlagInRangeWindow over which the pointer enters detection range.
A hovering pointer crosses within the window boundaries.kFlagInRangeWindow within which the pointer has crossed.

Important:
When a window loses capture of a pointer and it receives the PointerCaptureChange notification, it typically will not receive any further notifications. For this reason, it is important that you not make any assumptions based on evenly paired PointerDown/PointerUp or PointerEnter/PointerLeave notifications.

When inputs come from the mouse, as a result of mouse and pointer message integration, PointerEnter is not sent.

Some examples using this event:

WinPointerEventsMBS.PointerHWheel(PointerID as Integer, Delta as Integer, X as Integer, Y as Integer, info as WinPointerInfoMBS) as boolean

Type Topic Plugin Version macOS Windows Linux iOS Targets
event Windows MBS Win Plugin 16.2 ❌ No ✅ Yes ❌ No ❌ No
Posted to the window with foreground keyboard focus when a horizontal scroll wheel is rotated.

We provide, the pointer ID, the delta and x/y coordinate.
Info object provides pointer details.

To retrieve the wheel scroll units, use the inputData filed of the WinPointerInfoMBS object. This field contains a signed value and is expressed in a multiple of WHEEL_DELTA (120). A positive value indicates a rotation forward and a negative value indicates a rotation backward.
Note that the wheel inputs may be delivered even if the mouse cursor is located outside of application’s window. The wheel messages are delivered in a way very similar to the keyboard inputs. The focus window of the foregournd message queue receives the wheel messages.

Some examples using this event:

WinPointerEventsMBS.PointerLeave(PointerID as Integer, Flags as Integer, X as Integer, Y as Integer, info as WinPointerInfoMBS) as boolean

Type Topic Plugin Version macOS Windows Linux iOS Targets
event Windows MBS Win Plugin 16.2 ❌ No ✅ Yes ❌ No ❌ No
Sent to a window when a pointer leaves detection range over the window (hover) or when a pointer moves outside the boundaries of the window.

We provide the pointer ID, Flags, X and Y values.

BitwiseAnd(flags, WinPointerInfoMBS.kFlagInRange) <> 0Indicates whether this message was generated by a pointer that has not left detection range. This flag is not set when the pointer leaves the detection range of the window.
BitwiseAnd(flags, WinPointerInfoMBS.kFlagInContact) <> 0A flag that indicates whether this message was generated by a pointer that is in contact. This flag is not set for a pointer in detection range (hover).

Note:
Because the pointer may make contact with the device over a non-trivial area, this point location may be a simplification of a more complex pointer area. Whenever possible, an application should use the complete pointer area information instead of the point location.

If an application processes this message, it should return true, else false.

The PointerLeave notification can be used by a window to change mode or stop any feedback to the user while the pointer is over the window surface.
This notification is only sent to the window that is receiving input for the pointer. The following table lists some of the situations in which this notification is sent.

ActionFlags SetNotifications Sent To
A hovering pointer crosses window boundaries.BitwiseAnd(flags, WinPointerInfoMBS.kFlagInRange) <> 0Window outside of whose boundary the pointer moved.
A pointer goes out of detection range.N/AWindow for which the pointer leaves detection range.

Important:
When a window loses capture of a pointer and it receives the PointerCaptureChange notification, it typically will not receive any further notifications. For this reason, it is important that you not make any assumptions based on evenly paired PointerDown/PointerUp or PointerEnter/PointerLeave notifications.

If contact is maintained with the input digitizer and the pointer moves outside the window, PointerLeave is not generated. PointerLeave is generated only when a hovering pointer crosses window boundaries or contact is terminated.
PointerLeave is posted to the posted message queue if the input is originated from a mouse device.

Some examples using this event:

WinPointerEventsMBS.PointerUp(PointerID as Integer, Flags as Integer, X as Integer, Y as Integer, info as WinPointerInfoMBS) as boolean

Type Topic Plugin Version macOS Windows Linux iOS Targets
event Windows MBS Win Plugin 16.2 ❌ No ✅ Yes ❌ No ❌ No
Posted when a pointer that made contact over the client area of a window breaks contact.

This input message targets the window over which the pointer makes contact and the pointer is, at that point, implicitly captured to the window so that the window continues to receive input messages including the WM_POINTERUP notification for the pointer until it breaks contact.

We provide pointer ID, flags, X and Y.


BitwiseAnd(flags, WinPointerInfoMBS.kFlagNew) <> 0A flag that indicates whether this message represents the first input generated by a new pointer.
BitwiseAnd(flags, WinPointerInfoMBS.kFlagInRange) <> 0A flag that indicates whether this message was generated by a pointer during its lifetime. This flag is not set on messages that indicate that the pointer has left detection range
BitwiseAnd(flags, WinPointerInfoMBS.kFlagInContact) <> 0A flag that indicates whether this message was generated by a pointer that is in contact with the window surface. This flag is not set on messages that indicate a hovering pointer.
BitwiseAnd(flags, WinPointerInfoMBS.kFlagPrimary) <> 0Indicates that this pointer has been designated as primary.
BitwiseAnd(flags, WinPointerInfoMBS.kFlagFirstButton) <> 0A flag that indicates whether there is a primary action. This is analogous to a mouse left button down. A touch pointer will have this set when it is in contact with the digitizer surface. A pen pointer will have this set when it is in contact with the digitizer surface with no buttons pressed.
BitwiseAnd(flags, WinPointerInfoMBS.kFlagSecondButton) <> 0A flag that indicates whether there is a secondary action. This is analogous to a mouse right button down. A pen pointer will have this set when it is in contact with the digitizer surface with the pen barrel button pressed.
BitwiseAnd(flags, WinPointerInfoMBS.kFlagThirdButton) <> 0A flag that indicates whether there are one or more tertiary actions based on the pointer type; applications that wish to respond to tertiary actions must retrieve information specific to the pointer type to determine which tertiary buttons are pressed. For example, an application can determine the buttons states of a pen by calling GetPointerPenInfo and examining the flags that specify button states.
BitwiseAnd(flags, WinPointerInfoMBS.kFlagFourthButton) <> 0A flag that indicates whether the specified pointer took fourth action. Applications that wish to respond to fourth actions must retrieve information specific to the pointer type to determine if the first extended mouse (XButton1) button is pressed.
BitwiseAnd(flags, WinPointerInfoMBS.kFlagFifthButton) <> 0A flag that indicates whether the specified pointer took fifth action. Applications that wish to respond to fifth actions must retrieve information specific to the pointer type to determine if the second extended mouse (XButton2) button is pressed.

See Pointer Flags for more details.

Note:
A hovering pointer has none of the button flags set. This is analogous to a mouse move with no mouse buttons down. An application can determine the buttons states of a hovering pen, for example, by calling GetPointerPenInfo and examining the flags that specify button states.

Note:
Because the pointer may make contact with the device over a non-trivial area, this point location may be a simplification of a more complex pointer area. Whenever possible, an application should use the complete pointer area information instead of the point location.

If an application processes this message, it should return true, else false.

Each pointer has a unique pointer identifier during its lifetime. The lifetime of a pointer begins when it is first detected.
A PointerEnter event is generated if a hovering pointer is detected. A PointerDown event followed by a PointerEnter event is generated if a non-hovering pointer is detected.
During its lifetime, a pointer may generate a series of PointerUpdate event while it is hovering or in contact.
The lifetime of a pointer ends when it is no longer detected. This generates a WM_POINTERLEAVE message.
When a pointer is aborted, kFlagCanceled is set.
A PointerLeave event may also be generated when a non-captured pointer moves outside the bounds of a window.
To obtain the horizontal and vertical position of a pointer, use the following:


If the application does not process this message, Windows may generate one or more Gesture event if the sequence of input from this and, possibly, other pointers is recognized as a gesture. If a gesture is not recognized, DefWindowProc may generate mouse input.
If an application selectively consumes some pointer input and passes the rest back to Windows, the resulting behavior is undefined.

Some examples using this event:

WinPointerEventsMBS.PointerUpdate(PointerID as Integer, Flags as Integer, X as Integer, Y as Integer, info as WinPointerInfoMBS) as boolean

Type Topic Plugin Version macOS Windows Linux iOS Targets
event Windows MBS Win Plugin 16.2 ❌ No ✅ Yes ❌ No ❌ No
Posted to provide an update on a pointer that made contact over the client area of a window or on a hovering uncaptured pointer over the client area of a window.

While the pointer is hovering, the message targets whichever window the pointer happens to be over. While the pointer is in contact with the surface, the pointer is implicitly captured to the window over which the pointer made contact and that window continues to receive input for the pointer until it breaks contact.

We provide pointer ID, flags, X and Y.

BitwiseAnd(flags, WinPointerInfoMBS.kFlagNew) <> 0A flag that indicates whether this message represents the first input generated by a new pointer.
BitwiseAnd(flags, WinPointerInfoMBS.kFlagInRange) <> 0A flag that indicates whether this message was generated by a pointer during its lifetime. This flag is not set on messages that indicate that the pointer has left detection range
BitwiseAnd(flags, WinPointerInfoMBS.kFlagInContact) <> 0A flag that indicates whether this message was generated by a pointer that is in contact with the window surface. This flag is not set on messages that indicate a hovering pointer.
BitwiseAnd(flags, WinPointerInfoMBS.kFlagPrimary) <> 0Indicates that this pointer has been designated as primary.
BitwiseAnd(flags, WinPointerInfoMBS.kFlagFirstButton) <> 0A flag that indicates whether there is a primary action. This is analogous to a mouse left button down. A touch pointer will have this set when it is in contact with the digitizer surface. A pen pointer will have this set when it is in contact with the digitizer surface with no buttons pressed.
BitwiseAnd(flags, WinPointerInfoMBS.kFlagSecondButton) <> 0A flag that indicates whether there is a secondary action. This is analogous to a mouse right button down.
A pen pointer will have this set when it is in contact with the digitizer surface with the pen barrel button pressed.
BitwiseAnd(flags, WinPointerInfoMBS.kFlagThirdButton) <> 0A flag that indicates whether there are one or more tertiary actions based on the pointer type; applications that wish to respond to tertiary actions must retrieve information specific to the pointer type to determine which tertiary buttons are pressed. For example, an application can determine the buttons states of a pen by calling GetPointerPenInfo and examining the flags that specify button states.
BitwiseAnd(flags, WinPointerInfoMBS.kFlagFourthButton) <> 0A flag that indicates whether the specified pointer took fourth action. Applications that wish to respond to fourth actions must retrieve information specific to the pointer type to determine if the first extended mouse (XButton1) button is pressed.
BitwiseAnd(flags, WinPointerInfoMBS.kFlagFifthButton) <> 0A flag that indicates whether the specified pointer took fifth action. Applications that wish to respond to fifth actions must retrieve information specific to the pointer type to determine if the second extended mouse (XButton2) button is pressed.

See Pointer Flags for more details.

Note:
A hovering pointer has none of the button flags set. This is analogous to a mouse move with no mouse buttons down. An application can determine the buttons states of a hovering pen, for example, by calling GetPointerPenInfo and examining the flags that specify button states.

Note:
Because the pointer may make contact with the device over a non-trivial area, this point location may be a simplification of a more complex pointer area. Whenever possible, an application should use the complete pointer area information instead of the point location.

If an application processes this message, it should return true, else false.

Each pointer has a unique pointer identifier during its lifetime. The lifetime of a pointer begins when it is first detected.
A PointerEnterevent is generated if a hovering pointer is detected. A PointerDown event followed by a PointerEnter event is generated if a non-hovering pointer is detected.
During its lifetime, a pointer may generate a series of PointerUpdate events while it is hovering or in contact.
The lifetime of a pointer ends when it is no longer detected. This generates a PointerLeave event.
When a pointer is aborted, kFlagCanceled is set.
A PointerLeave event may also be generated when a non-captured pointer moves outside the bounds of a window.

If the application does not process this message, Windows may generate one or more Gesture event if the sequence of input from this and, possibly, other pointers is recognized as a gesture. If a gesture is not recognized, Windows may generate mouse input.
If an application selectively consumes some pointer input and passes the rest back to Windows, the resulting behavior is undefined.
If the application does not process these messages as fast as they are generated, some moves may be coalesced. The history of inputs that were coalesced into this message can be retrieved using the GetPointerInfoHistory function.

Some examples using this event:

WinPointerEventsMBS.PointerWheel(PointerID as Integer, Delta as Integer, X as Integer, Y as Integer, info as WinPointerInfoMBS) as boolean

Type Topic Plugin Version macOS Windows Linux iOS Targets
event Windows MBS Win Plugin 16.2 ❌ No ✅ Yes ❌ No ❌ No
Posted to the window with foreground keyboard focus when a vertical scroll wheel is rotated.

We provide, the pointer ID, the delta and x/y coordinate.
Info object provides pointer details.

To retrieve the wheel scroll units, use the inputData filed of the WinPointerInfoMBS object. This field contains a signed value and is expressed in a multiple of WHEEL_DELTA (120). A positive value indicates a rotation forward and a negative value indicates a rotation backward.
Note that the wheel inputs may be delivered even if the mouse cursor is located outside of application’s window. The wheel messages are delivered in a way very similar to the keyboard inputs. The focus window of the foregournd message queue receives the wheel messages.

Some examples using this event:

The items on this page are in the following plugins: MBS Win Plugin.


The biggest plugin in space...