Compartir a través de


InputPointerSource Clase

Definición

Representa un objeto registrado para la entrada del puntero de informe y proporciona el control de eventos de entrada y cursor de puntero.

public ref class InputPointerSource sealed : InputObject
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.Foundation.WindowsAppSDKContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class InputPointerSource final : InputObject
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.Foundation.WindowsAppSDKContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class InputPointerSource : InputObject
Public NotInheritable Class InputPointerSource
Inherits InputObject
Herencia
Object Platform::Object IInspectable InputObject InputPointerSource
Atributos

Ejemplos

En el ejemplo siguiente se muestra cómo configurar un SwapChainPanel con CreateCoreIndependentInputSource y recibir una entrada táctil y un lápiz de baja latencia en un subproceso en segundo plano a través de un DispatcherQueueController.

void SetupBackgroundPenInput(SwapChainPanel swapChainPanel)
{
    m_dispatcherQueueController = DispatcherQueueController::CreateOnDedicatedThread();

    m_dispatcherQueueController.DispatcherQueue().TryEnqueue([this] {

        InputPointerSourceDeviceKinds deviceKind = (InputPointerSourceDeviceKinds)(
            Microsoft::UI::Input::InputPointerSourceDeviceKinds::Touch |
            Microsoft::UI::Input::InputPointerSourceDeviceKinds::Pen);
        m_coreInput = swapChainPanel().CreateCoreIndependentInputSource(deviceKind);

        m_coreInput.PointerMoved({ this, &DirectXPage::SwapChainPanel_OnPointerMoved });
        });
}


void DirectXPage::SwapChainPanel_OnPointerPressed(InputPointerSource const& sender, Microsoft::UI::Input::PointerEventArgs const& e)
{
    // When the pointer is pressed begin tracking the pointer movement.
    m_main->StartTracking();
}

En este ejemplo se muestra cómo configurar la imagen del cursor de mano del sistema para mostrar cuando el cursor mantiene el puntero sobre un SwapChainPanel:

InputPointerSourceDeviceKinds deviceKind = (InputPointerSourceDeviceKinds)(
    Microsoft::UI::Input::InputPointerSourceDeviceKinds::Touch |
    Microsoft::UI::Input::InputPointerSourceDeviceKinds::Mouse |
    Microsoft::UI::Input::InputPointerSourceDeviceKinds::Pen);
m_coreInput = swapChainPanel().CreateCoreIndependentInputSource(deviceKind);

m_coreInput.InputCursor = InputSystemCursor.Create(InputSystemCursorShape.Hand);

Comentarios

El espacio de coordenadas para los eventos de puntero está en el mismo espacio de coordenadas que el objeto SwapChainPanel.

Orden de eventos

Caso normal

Los eventos de puntero de InputPointerSource siguen un orden garantizado en circunstancias normales:

  1. PunteroEntrar
  2. PunteroPressed
  3. PointerMoved
  4. PunteroReleased
  5. PointerExited

Donde pointerMoved solo se generará si el puntero se mueve o el botón indica el cambio del mouse. Todos los eventos tienen el mismo identificador de puntero.

Captura de puntero perdida

pointerCaptureLost se genera cuando el sistema de entrada enruta un puntero en contacto a un destino de entrada diferente. Cuando se genera PointerCaptureLost, que solo se producirá después de que se haya recibido pointerPressed, no se generará ningún evento adicional para ese puntero. En concreto, no se generará PointerReleased y pointerExited, por lo que debe controlar PointerCaptureLost como un estado final válido para un puntero determinado. Este es un ejemplo de una secuencia válida de eventos que incluye la pérdida de captura de puntero:

  1. PunteroEntrar
  2. PunteroPressed
  3. PointerMoved
  4. PointerCaptureLost

Eventos enrutados

Los eventos enrutados de puntero se generan cuando el sistema de entrada enruta un puntero en contacto se enruta a un destino de entrada diferente. A diferencia de PointerCaptureLost, los eventos enrutados proporcionan la posibilidad de que el puntero en contacto se enrute de nuevo antes de que se libere el puntero.

A continuación se muestra una secuencia válida de eventos en los que el puntero en contacto se enruta a un destino diferente, se enruta a inputPointerSource original y, a continuación, se libera:

  1. PunteroEntrar
  2. PunteroPressed
  3. PointerMoved
  4. PointerRoutedAway
  5. PointerRoutedTo
  6. PunteroReleased
  7. PointerExited

Este es un ejemplo de una secuencia válida de eventos en los que un puntero en contacto se enruta a un destino diferente y, a continuación, se libera en el otro destino:

  1. PunteroEntrar
  2. PunteroPressed
  3. PointerMoved
  4. PointerRoutedAway
  5. PointerRoutedReleased

Nota

Cuando se genera PointerRoutedReleased, no se generará ningún evento adicional para ese puntero. En concreto, no se generará pointerReleased y pointerExited, por lo que debe controlar PointerRoutedReleased como un estado final válido para un puntero determinado.

También es posible recibir un puntero nuevo en contacto que se enruta desde un destino diferente. En este caso, los eventos PointerEntered y PointerPressed están garantizados para preceder a un PointerRoutedTo si el puntero aún no ha sido visto por inputPointerSource actual. A continuación se muestra un ejemplo de esta secuencia de eventos:

  1. PunteroEntrar
  2. PunteroPressed
  3. PointerRoutedTo
  4. PointerMoved
  5. PunteroReleased
  6. PointerExited

Propiedades

Cursor

Obtiene o establece el cursor mostrado cuando un puntero de mouse o lápiz está sobre el destino de entrada, un Visual o WindowId (HWND), de este InputPointerSource.

DeviceKinds

Obtiene los tipos de dispositivo admitidos por este InputPointerSource.

DispatcherQueue

Obtiene el DispatcherQueue para InputObject.

(Heredado de InputObject)

Métodos

GetForIsland(ContentIsland)

Recupera un objeto InputPointerSource para el ContentIsland especificado.

Eventos

PointerCaptureLost

Se produce cuando un puntero en contacto con este InputPointerSource se mueve a otro destino de entrada.

PointerEntered

Se produce cuando un puntero se mueve a los límites de este InputPointerSource.

PointerExited

Se produce cuando un puntero sale de los límites de este InputPointerSource.

PointerMoved

Se produce cuando un puntero se mueve mientras se encuentra dentro de los límites de este InputPointerSource.

PointerPressed

Se produce cuando se presiona un botón del mouse, o un dedo o lápiz inician contacto con la superficie del digitalizador, mientras que dentro de los límites de este InputPointerSource.

PointerReleased

Se produce cuando se suelta un dispositivo de puntero que inició previamente una acción Presionar (se suelta un botón del mouse o se levanta un contacto táctil o de lápiz desde la superficie del digitalizador), mientras que dentro de los límites de esta InputPointerSource.

PointerRoutedAway

Se produce cuando se redirige un puntero a otro InputPointerSource (posiblemente en un proceso independiente).

PointerRoutedReleased

Se produce cuando el puntero que se enruta a otro InputPointerSource se libera en ese otro destino de entrada.

PointerRoutedTo

Se produce cuando se enruta un puntero a este InputPointerSource desde un destino de entrada diferente.

PointerWheelChanged

Se produce cuando se gira la rueda del mouse (cambia el valor delta de la rueda).

Se aplica a

Consulte también