InputPointerSource Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Représente un objet inscrit pour signaler l’entrée du pointeur et fournir une gestion des événements de pointeur et d’entrée.
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
- Héritage
- Attributs
Exemples
L’exemple suivant montre comment configurer un SwapChainPanel avec CreateCoreIndependentInputSource et recevoir un stylet à faible latence et une entrée tactile sur un thread d’arrière-plan via 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();
}
Cet exemple montre comment configurer l’image du curseur de la main système pour qu’elle s’affiche lorsque le curseur pointe sur 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);
Remarques
L’espace de coordonnées des événements de pointeur se trouve dans le même espace de coordonnées que l’objet SwapChainPanel .
Ordre des événements
Cas normal
Les événements de pointeur d’InputPointerSource suivent un ordre garanti dans des circonstances normales :
- PointerEntered
- PointerPressed
- PointerMoved
- PointerReleased
- PointerExited
Où PointerMoved n’est déclenché que si le pointeur se déplace ou si le bouton est affiché sur le changement de la souris. Tous les événements ont le même ID de pointeur.
Capture de pointeur perdue
PointerCaptureLost est déclenché lorsqu’un pointeur en contact est acheminé vers une autre cible d’entrée par le système d’entrée. Lorsque PointerCaptureLost est déclenché, ce qui ne se produit qu’après la réception de PointerPressed , aucun événement supplémentaire n’est déclenché pour ce pointeur. Plus précisément, PointerReleased et PointerExited ne seront pas déclenchés. Vous devez donc gérer PointerCaptureLost comme état de fin valide pour un pointeur donné. Voici un exemple d’une séquence d’événements valide qui inclut la perte de capture de pointeur :
- PointerEntered
- PointerPressed
- PointerMoved
- PointerCaptureLost
Événements routés
Les événements routés de pointeur sont déclenchés lorsqu’un pointeur en contact est acheminé vers une autre cible d’entrée par le système d’entrée. Contrairement à PointerCaptureLost, les événements routés offrent la possibilité que le pointeur en contact soit routé avant que le pointeur ne soit libéré.
Ce qui suit montre une séquence valide d’événements où le pointeur en contact est acheminé vers une autre cible, routé vers l’InputPointerSource d’origine, puis libéré :
- PointerEntered
- PointerPressed
- PointerMoved
- PointerRoutedAway
- PointerRoutedTo
- PointerReleased
- PointerExited
Voici un exemple d’une séquence d’événements valide dans laquelle un pointeur en contact est acheminé vers une autre cible, puis libéré sur l’autre cible :
- PointerEntered
- PointerPressed
- PointerMoved
- PointerRoutedAway
- PointerRoutedReleased
Notes
Lorsque PointerRoutedReleased est déclenché, aucun événement supplémentaire n’est déclenché pour ce pointeur. Plus précisément, PointerReleased et PointerExited ne seront pas déclenchés. Vous devez donc gérer PointerRoutedReleased comme état de fin valide pour un pointeur donné.
Il est également possible de recevoir un tout nouveau pointeur en contact qui a été routé à partir d’une autre cible. Dans ce cas, les événements PointerEntered et PointerPressed sont garantis pour précéder un PointerRoutedTo si le pointeur n’a pas encore été vu par l’InputPointerSource actuel. Voici un exemple de cette séquence d’événements :
- PointerEntered
- PointerPressed
- PointerRoutedTo
- PointerMoved
- PointerReleased
- PointerExited
Propriétés
Cursor |
Obtient ou définit le curseur affiché lorsqu’un pointeur de souris ou de stylet se trouve sur la cible d’entrée, un visuel ou un WindowId (HWND) de cet InputPointerSource. |
DeviceKinds |
Obtient les types d’appareils pris en charge par cette InputPointerSource. |
DispatcherQueue |
Obtient le DispatcherQueue pour l’objet InputObject. (Hérité de InputObject) |
Méthodes
GetForIsland(ContentIsland) |
Récupère un InputPointerSource objet pour le ContentIsland spécifié. |
Événements
PointerCaptureLost |
Se produit lorsqu’un pointeur en contact avec cette InputPointerSource se déplace vers une autre cible d’entrée. |
PointerEntered |
Se produit lorsqu’un pointeur se déplace dans les limites de cet InputPointerSource. |
PointerExited |
Se produit lorsqu’un pointeur sort des limites de cet InputPointerSource. |
PointerMoved |
Se produit lorsqu’un pointeur se déplace dans les limites de cet InputPointerSource. |
PointerPressed |
Se produit lorsqu’un bouton de la souris est enfoncé ou qu’un doigt ou un stylet initie le contact avec la surface du numériseur, alors qu’il se trouve dans les limites de cette InputPointerSource. |
PointerReleased |
Se produit lorsqu’un appareil pointeur qui a précédemment lancé une action Appuyer est libéré (un bouton de souris est relâché, ou un contact tactile ou stylet est levé de la surface du numériseur), alors qu’il se trouve dans les limites de cette InputPointerSource. |
PointerRoutedAway |
Se produit lorsqu’un pointeur est redirigé vers un autre InputPointerSource (éventuellement dans un processus distinct). |
PointerRoutedReleased |
Se produit lorsque le pointeur qui a été acheminé vers un autre InputPointerSource est libéré sur cette autre cible d’entrée. |
PointerRoutedTo |
Se produit lorsqu’un pointeur est routé vers cette InputPointerSource à partir d’une autre cible d’entrée. |
PointerWheelChanged |
Se produit lorsque la roulette de la souris est pivotée (la valeur du delta de la roue change). |