UWP C ++ / WinRT-如何检测是否按下了鼠标右键

时间:2019-01-29 15:43:51

标签: uwp mouse c++-winrt

我打算按照PointerPressed()/ PointerMoved()/ PointerReleased()模式在我的应用程序中实现鼠标“拖动”手势。这是一个UWP应用程序,使用了最近发布的Windows版C ++ / WinRT语言投影。

问题是,我需要使用鼠标右键而不是鼠标左键来完成此操作。

Pointer ****()事件当前不提供知道按下哪个按钮的方法。如果尝试在Pointer ****()事件内调用GetKeyState(),则:: RightButton虚拟键将始终返回0(无)。此外,在释放按钮之前,不会触发RightTapped()事件。

但是,如果将PointerPressed()事件附加到Button(除了Click()事件),您会注意到左键单击将触发Click事件,而右键单击实际上将触发PointerPressed()事件。因此,从理论上讲, 可以区分两个鼠标按钮(因为API已经做到了)。

有人知道使用鼠标右键在UWP C ++ / WinRT应用程序中执行上述手势的方法吗?任何建议都可以,我目前不知所措。

1 个答案:

答案 0 :(得分:1)

您可以检查IsRightButtonPressed的{​​{1}}值,可以通过PointerPointProperties进行访问。假设您在事件处理程序中将PointerRoutedEventArgs作为参数,然后

PointerRoutedEventArgs e

您可以检查此sample以获得C#中的更多详细信息。检查PointerPoint currentPoint = e.GetCurrentPoint(NULL); PointerPointProperties props = currentPoint.Properties(); if (props.IsRightButtonPressed()) { // right button pressed! } documentation,以了解将哪个参数作为参数传递