InputPointerSource Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Rappresenta un oggetto registrato per l'input del puntatore del report e fornire il cursore del puntatore e la gestione degli eventi di input.
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
- Ereditarietà
- Attributi
Esempio
L'esempio seguente mostra come configurare un oggetto SwapChainPanel con CreateCoreIndependentInputSource e ricevere input tocco e penna a bassa latenza in un thread in background tramite 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();
}
In questo esempio viene illustrato come configurare l'immagine del cursore della mano di sistema da visualizzare quando il cursore passa il puntatore su un controllo 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);
Commenti
Lo spazio delle coordinate per gli eventi del puntatore si trova nello stesso spazio delle coordinate dell'oggetto SwapChainPanel .
Ordine eventi
Caso normale
Gli eventi puntatore di InputPointerSource seguono un ordine garantito in circostanze normali:
- PointerEntered
- PointerPressed
- PointerMoved
- PointerReleased
- PointerExited
Dove Puntatore Spostato verrà generato solo se il puntatore si sposta o lo stato del pulsante sul mouse cambia. Tutti gli eventi hanno lo stesso ID puntatore.
Acquisizione puntatore persa
PointerCaptureLost viene generato quando un puntatore a contatto viene instradato a una destinazione di input diversa dal sistema di input. Quando viene generato PointerCaptureLost, che verrà generato solo dopo la ricezione di PointerPressed , non verranno generati altri eventi per tale puntatore. In particolare, PointerReleased e PointerExited non verranno generati, pertanto è consigliabile gestire PointerCaptureLost come stato finale valido per un determinato puntatore. Ecco un esempio di una sequenza valida di eventi che include la perdita dell'acquisizione del puntatore:
- PointerEntered
- PointerPressed
- PointerMoved
- PointerCaptureLost
Eventi indirizzati
Gli eventi indirizzati del puntatore vengono generati quando un puntatore a contatto viene instradato a una destinazione di input diversa dal sistema di input. A differenza di PointerCaptureLost, gli eventi indirizzati offrono la possibilità di instradare il puntatore in contatto prima del rilascio del puntatore.
Di seguito viene illustrata una sequenza valida di eventi in cui il puntatore in contatto viene instradato a una destinazione diversa, indirizzata all'oggetto InputPointerSource originale e quindi rilasciata:
- PointerEntered
- PointerPressed
- PointerMoved
- PointerRoutedAway
- PointerRoutedTo
- PointerReleased
- PointerExited
Di seguito è riportato un esempio di una sequenza valida di eventi in cui un puntatore a contatto viene instradato a una destinazione diversa e quindi rilasciato nell'altra destinazione:
- PointerEntered
- PointerPressed
- PointerMoved
- PointerRoutedAway
- PointerRoutedReleased
Nota
Quando viene generato PointerRoutedReleased, non verranno generati altri eventi per tale puntatore. In particolare, PointerReleased e PointerExited non verranno generati, pertanto è necessario gestire PointerRoutedReleased come stato finale valido per un determinato puntatore.
È anche possibile ricevere un nuovo puntatore a contatto che è stato instradato da un target diverso. In questo caso, gli eventi PointerEntered e PointerPressed hanno la garanzia di precedere un PointerRoutedTo se il puntatore non è stato ancora rilevato dall'oggetto InputPointerSource corrente. Di seguito è riportato un esempio di questa sequenza di eventi:
- PointerEntered
- PointerPressed
- PointerRoutedTo
- PointerMoved
- PointerReleased
- PointerExited
Proprietà
Cursor |
Ottiene o imposta il cursore visualizzato quando un puntatore del mouse o della penna si trova sulla destinazione di input, un oggetto Visivo o WindowId (HWND) di questo oggetto InputPointerSource. |
DeviceKinds |
Ottiene i tipi di dispositivo supportati da inputPointerSource. |
DispatcherQueue |
Ottiene dispatcherQueue per InputObject. (Ereditato da InputObject) |
Metodi
GetForIsland(ContentIsland) |
Recupera un InputPointerSource oggetto per l'oggetto ContentIsland specificato. |
Eventi
PointerCaptureLost |
Si verifica quando un puntatore in contatto con l'oggetto InputPointerSource passa a un'altra destinazione di input. |
PointerEntered |
Si verifica quando un puntatore si sposta nei limiti di inputPointerSource. |
PointerExited |
Si verifica quando un puntatore si sposta all'esterno dei limiti di inputPointerSource. |
PointerMoved |
Si verifica quando un puntatore si sposta all'interno dei limiti di inputPointerSource. |
PointerPressed |
Si verifica quando viene premuto un pulsante del mouse o un dito o una penna avviano il contatto con la superficie del digitalizzatore, all'interno dei limiti di inputPointerSource. |
PointerReleased |
Si verifica quando viene rilasciato un dispositivo puntatore che in precedenza ha avviato un'azione Press (viene rilasciato un pulsante del mouse o un contatto tocco o penna dalla superficie del digitalizzatore), mentre entro i limiti di questo InputPointerSource. |
PointerRoutedAway |
Si verifica quando un puntatore viene reindirizzato a un altro oggetto InputPointerSource (possibilmente in un processo separato). |
PointerRoutedReleased |
Si verifica quando il puntatore indirizzato a un inputPointerSource diverso viene rilasciato su tale altra destinazione di input. |
PointerRoutedTo |
Si verifica quando un puntatore viene instradato a inputPointerSource da una destinazione di input diversa. |
PointerWheelChanged |
Si verifica quando la rotellina del mouse viene ruotata (il valore differenziale della rotellina cambia). |
Si applica a
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per