我打算按照PointerPressed()/ PointerMoved()/ PointerReleased()模式在我的应用程序中实现鼠标“拖动”手势。这是一个UWP应用程序,使用了最近发布的Windows版C ++ / WinRT语言投影。
问题是,我需要使用鼠标右键而不是鼠标左键来完成此操作。
Pointer ****()事件当前不提供知道按下哪个按钮的方法。如果尝试在Pointer ****()事件内调用GetKeyState(),则:: RightButton虚拟键将始终返回0(无)。此外,在释放按钮之前,不会触发RightTapped()事件。
但是,如果将PointerPressed()事件附加到Button(除了Click()事件),您会注意到左键单击将触发Click事件,而右键单击实际上将触发PointerPressed()事件。因此,从理论上讲, 可以区分两个鼠标按钮(因为API已经做到了)。
有人知道使用鼠标右键在UWP C ++ / WinRT应用程序中执行上述手势的方法吗?任何建议都可以,我目前不知所措。
答案 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,以了解将哪个参数作为参数传递