InputPointerSource Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
- 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:
- PunteroEntrar
- PunteroPressed
- PointerMoved
- PunteroReleased
- 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:
- PunteroEntrar
- PunteroPressed
- PointerMoved
- 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:
- PunteroEntrar
- PunteroPressed
- PointerMoved
- PointerRoutedAway
- PointerRoutedTo
- PunteroReleased
- 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:
- PunteroEntrar
- PunteroPressed
- PointerMoved
- PointerRoutedAway
- 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
- PunteroEntrar
- PunteroPressed
- PointerRoutedTo
- PointerMoved
- PunteroReleased
- 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 |
Métodos
GetForIsland(ContentIsland) |
Recupera un objeto |
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). |