我打算在我的应用程序中实现鼠标“拖动”手势,遵循 PointerPressed()/PointerMoved()/PointerReleased() 模式。这是一个使用最近发布的 Windows C++/WinRT 语言投影的 UWP 应用程序。
事实是,我需要使用鼠标右键而不是鼠标左键来完成此操作。
Pointer****() 事件当前不提供知道按下了哪个按钮的方法。如果您尝试在 Pointer****() 事件内调用 GetKeyState(),则::RightButton 虚拟键将始终返回 0(无)。此外,在释放按钮之前,RightTapped() 事件不会触发。
但是,如果将 PointerPressed() 事件附加到 Button(除了 Click() 事件之外),您会注意到左键单击将触发 Click 事件,而右键单击实际上将触发 PointerPressed() 事件。因此,从理论上讲,区分两个鼠标按钮是可能的(因为 API 已经做到了)。
有人知道如何使用鼠标右键在 UWP C++/WinRT 应用程序中执行上述手势吗?任何建议都可以,我目前束手无策。
最佳答案
您可以检查 PointerPointProperties
的 IsRightButtonPressed
值,该值可通过 PointerRoulatedEventArgs
访问。假设您在事件处理程序中获取 PointerRoulatedEventArgs e
作为参数,然后
PointerPoint currentPoint = e.GetCurrentPoint(NULL);
PointerPointProperties props = currentPoint.Properties();
if (props.IsRightButtonPressed()) {
// right button pressed!
}
您可以查看这个sample有关 C# 中的更多详细信息。检查GetCurrentPoint
documentation关于将哪个参数作为参数传递
关于UWP C++/WinRT - 如何检测是否按下鼠标右键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54424691/