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

UWP C++/WinRT-如何检测是否按下了鼠标右键,uwp,mouse,c++-winrt,Uwp,Mouse,C++ Winrt,我打算按照PointerPressed()/PointerMoved()/PointerReleased()模式在应用程序中实现鼠标“拖动”手势。这是一个UWP应用程序,使用最近发布的Windows C++/WinRT语言投影 问题是,我需要用鼠标右键,而不是鼠标左键 指针****()事件目前不提供知道按下哪个按钮的方法。如果尝试在指针****()事件内调用GetKeyState(),则::RightButton虚拟键将始终返回0(无)。此外,直到释放按钮,RightTapped()事件才会触发

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

问题是,我需要用鼠标右键,而不是鼠标左键

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

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


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

您可以检查
IsRightButtonPressed
PointerPointProperties的值,该值可通过
PointerRouttedEventArgs
访问。假设您在事件处理程序中获取
PointerRoutedEventArgs e
作为参数,然后

PointerPoint currentPoint = e.GetCurrentPoint(NULL);
PointerPointProperties props = currentPoint.Properties();
if (props.IsRightButtonPressed()) {
    // right button pressed!
}

您可以在C#中查看更多详细信息。检查
GetCurrentPoint
关于将哪个参数作为参数传递

您没有为您的案例使用
Drag***
事件的任何原因?实际上,我想修改我之前的陈述。是的,你一直都是对的。PointerPoint.Properties()中有一个IsRightButtonPressed()属性。它是有效的,我只是测试了一下。非常感谢你的帮助!…尽管如此,我认为在.Properties和.IsRightButtonPressed的末尾没有括号表明上面的代码实际上不是C++/WinRT,而是C++/CX(我想?)@Izhido谢谢你指出,我错过了它。此处需要括号:)@Izhido仅供一般参考。。。根据我目前的经验,UWP
C#
api总是与
C++/WinRT
匹配,只需要正确使用它