How to: Process Mouse Input Events

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.

To process mouse input events

  1. 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.
     }
    
  2. 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
         }
     }
    
  3. 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. 
     }
    

See also

Overview

Mouse Input
How to: Poll for Mouse Input
Input Technologies and Devices Overviews

Reference

MouseDevice Class
CoreWindow.PointerMoved Event
MouseDevice.MouseMoved Event