【发布时间】:2015-01-23 12:16:04
【问题描述】:
我正在使用 c++(DirectX 和 XAML 应用程序)开发 windows8.1 游戏。而且我发现在我的游戏中处理触摸的问题很少。我正在使用这些事件处理程序来检测用户触摸/点击。
// The CoreIndependentInputSource will raise pointer events for the specified device types on whichever thread it's created on.
m_coreInput = swapChainPanel->CreateCoreIndependentInputSource(
Windows::UI::Core::CoreInputDeviceTypes::Mouse |
Windows::UI::Core::CoreInputDeviceTypes::Touch |
Windows::UI::Core::CoreInputDeviceTypes::Pen
);
// Register for pointer events, which will be raised on the background thread.
m_coreInput->PointerPressed += ref new TypedEventHandler<Object^, PointerEventArgs^>(this, &OpenGLESPage::OnPointerPressed);
m_coreInput->PointerMoved += ref new TypedEventHandler<Object^, PointerEventArgs^>(this, &OpenGLESPage::OnPointerMoved);
m_coreInput->PointerReleased += ref new TypedEventHandler<Object^, PointerEventArgs^>(this, &OpenGLESPage::OnPointerReleased);
....
void OpenGLESPage::OnPointerReleased(Platform::Object^ sender, PointerEventArgs^ e)
{
e->Handled = true;
Windows::UI::Input::PointerPoint ^ point = e->CurrentPoint;
....
}
如果我按下鼠标单键 - 一切正常,所有事件都将被触发 - 按下、移动、释放。但如果我执行这种组合 - 事件将不会被正确触发。
- 按鼠标左键 -> 调试:左按
- 按鼠标右键 -> ???调试:移动
- 释放鼠标左键 -> ???调试:移动
- 释放鼠标右键 -> 调试:释放右键
我错过了什么?我怎样才能让所有处理程序正常工作?
【问题讨论】:
标签: c++ xaml windows-runtime touch windows-8.1