在C ++ Windows应用商店应用中,主窗口上有一个名为 PointerPressed 的事件。我试图找到如何检测双击而不是单击。我没有看到鼠标双击时会触发的等效事件 PointerPressed 。
我还检查了 PointerPressed 事件参数,它似乎不包含有关单击还是双击的信息。
使用 GestureRecognizer 上的 DoubleTapped 属性很容易执行它,但如果我不使用手势识别器怎么办?有没有办法检测到简单的鼠标双击???
谢谢。
编辑:它是一个针对Windows应用商店的纯C ++ Direct3D应用程序,不使用XAML或任何类似的用户界面。
答案 0 :(得分:1)
这可能是一个糟糕的答案,因为它没有回答这个问题,但从概念上讲,点击是一个事件。双击包含两次点击,分别是两个事件。由于手势由多个这样的事件组成,我们看到双击实际上是一个手势。因此,您可能应该使用手势识别器。
答案 1 :(得分:1)
DoubleTapped
上有UIElement
个事件。无需使用GestureRecognizer
。
答案 2 :(得分:1)
使用Pointer.Timestamp属性,并检查自上次鼠标按下事件以来的时间是否小于或等于双击时间。
这是伪代码:
static unsigned long long LastTimestamp = 0;
static unsigned long long DoubleClickTimeMS = 250;
if( event == mouse_down )
{
if( (Pointer->Timestamp - LastTimestamp) / 1000 <= DoubleClickTimeMS )
{
//switch event for a double-click
event = double_click;
}
LastTimestamp = Pointer->Timestamp;
}