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

标签 uwp mouse c++-winrt

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

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

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

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

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

最佳答案

您可以检查 PointerPointPropertiesIsRightButtonPressed 值,该值可通过 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/

相关文章:

c# - 如何从 Bing Maps API 获取交通数据?

c# - 如何将选定的文件详细信息传递到另一个页面 - UWP?

windows - 是否有一个可以与 GUI 交互的自动 'mouse clicking' 库?

java 用鼠标 move 图像

uwp - 如何在代码中创建 XAML 自定义控件?

c++-winrt - 如何读取更新的 C++/WinRT/XAML UWP 应用的命令行参数

UWP Win2D 绘制指定宽度的文本?是否可以?

javascript - 当我将鼠标悬停在元素上时如何获取鼠标的偏移量..使用 jquery

visual-studio - 错误 : this template attempted to load component assembly 'Microsoft. VisualStudio.Universal.TemplateWizards,版本=15.0.0.0

c# - 使用 XmlSerializer 反序列化 XML 的替代方法