Listening for mouse input events is the best way to respond to input as soon as it happens, rather than waiting until you next check the input value.
Listen for each screen position update by subscribing to the CoreWindow.PointerMoved event as shown in the following example.
C++
auto window = CoreWindow::GetForCurrentThread();
window->PointerMoved +=
ref new TypedEventHandler<CoreWindow^,PointerEventArgs^>(this, &OnPointerMoved);
OnPointerMoved(CoreWindow^ window, PointerEventArgs^ args>)
{
auto pointerPoint = args->CurrentPoint;
auto pointerPosition = pointerPoint->Position;
// Process new position.
}
Listen for each button press by subscribing to the CoreWindow.PointerMoved event as shown in the following example.
C++
auto window = CoreWindow::GetForCurrentThread();
window->PointerMoved +=
ref new TypedEventHandler<CoreWindow^,PointerEventArgs^>(this, &OnPointerMoved);
OnPointerMoved(CoreWindow^ window, PointerEventArgs^ args>)
{
auto updateKind = args->CurrentPoint->Properties->PointerUpdateKind;
// Process new button press.
if(updateKind == PointerUpdateKind::LeftButtonPressed)
{
//Left button was pressed
}
if(updateKind == PointerUpdateKind::LeftButtonReleased)
{
//Left button was released
}
if(args->CurrentPoint->isLeftButtonPressed)
{
//Left button is being held down
}
}
Listen for each raw mouse movement by subscribing to the MouseDevice.MouseMoved event as shown in the following example.
C++
// Save the token to unsubscribe later if desired.
auto _mouseListenerToken = MouseDevice::GetForCurrentView()->MouseMoved +=
ref new TypedEventHandler<MouseDevice^, MouseEventArgs^>(this, &OnMouseMoved);
OnMouseMoved(MouseDevice^ device, MouseEventArgs^ args)
{
auto delta = args->MouseDelta;
// Process the latest delta movement.
}
Mouse Input
How to: Poll for Mouse Input
Input Technologies and Devices Overviews
MouseDevice Class
CoreWindow.PointerMoved Event
MouseDevice.MouseMoved Event