InputPointerSource Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Representa um objeto que é registrado para relatar a entrada do ponteiro e fornecer o cursor de ponteiro e a manipulação de eventos de entrada.
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
- Herança
- Atributos
Exemplos
O exemplo a seguir mostra como configurar um SwapChainPanel com CreateCoreIndependentInputSource e receber a caneta de baixa latência e a entrada por toque em um thread em segundo plano por meio de um 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();
}
Este exemplo mostra como configurar a imagem do cursor de mão do sistema a ser exibida quando o cursor passar o mouse sobre um 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);
Comentários
O espaço de coordenadas para os eventos de ponteiro está no mesmo espaço de coordenadas que o objeto SwapChainPanel .
Ordem do evento
Caso Normal
Os eventos de ponteiro de InputPointerSource seguem uma ordem garantida em circunstâncias normais:
- PointerEntered
- PointerPressed
- PointerMoved
- PointerReleased
- PointerExited
Onde PointerMoved só será gerado se o ponteiro se mover ou os estados do botão no mouse forem alterados. Todos os eventos têm a mesma ID de ponteiro.
Captura de ponteiro perdida
PointerCaptureLost é gerado quando um ponteiro em contato é roteado para um destino de entrada diferente pelo sistema de entrada. Quando PointerCaptureLost é gerado, o que só acontecerá depois que PointerPressed for recebido, nenhum evento adicional será gerado para esse ponteiro. Especificamente, PointerReleased e PointerExited não serão gerados, portanto, você deve manipular PointerCaptureLost como um estado final válido para um determinado ponteiro. Aqui está um exemplo de uma sequência válida de eventos que inclui a perda de captura de ponteiro:
- PointerEntered
- PointerPressed
- PointerMoved
- PointerCaptureLost
Eventos roteados
Os eventos roteado de ponteiro são gerados quando um ponteiro em contato é roteado para um destino de entrada diferente pelo sistema de entrada. Ao contrário de PointerCaptureLost, os eventos roteado fornecem a possibilidade do ponteiro em contato ser roteado de volta antes que o ponteiro seja liberado.
O seguinte mostra uma sequência válida de eventos em que o ponteiro em contato é roteado para um destino diferente, roteado de volta para o InputPointerSource original e liberado:
- PointerEntered
- PointerPressed
- PointerMoved
- PointerRoutedAway
- PointerRoutedTo
- PointerReleased
- PointerExited
Aqui está um exemplo de uma sequência válida de eventos em que um ponteiro em contato é roteado para um destino diferente e liberado no outro destino:
- PointerEntered
- PointerPressed
- PointerMoved
- PointerRoutedAway
- PointerRoutedReleased
Observação
Quando PointerRoutedReleased for gerado, nenhum evento adicional será gerado para esse ponteiro. Especificamente, PointerReleased e PointerExited não serão gerados, portanto, você deve manipular PointerRoutedReleased como um estado final válido para um determinado ponteiro.
Também é possível receber um novo ponteiro em contato que foi roteado de um destino diferente. Nesse caso, os eventos PointerEntered e PointerPressed têm a garantia de preceder um PointerRoutedTo se o ponteiro ainda não tiver sido visto pelo InputPointerSource atual. Veja a seguir um exemplo dessa sequência de eventos:
- PointerEntered
- PointerPressed
- PointerRoutedTo
- PointerMoved
- PointerReleased
- PointerExited
Propriedades
Cursor |
Obtém ou define o cursor exibido quando um ponteiro de mouse ou caneta está sobre o destino de entrada, um Visual ou WindowId (HWND), deste InputPointerSource. |
DeviceKinds |
Obtém os tipos de dispositivo compatíveis com este InputPointerSource. |
DispatcherQueue |
Obtém o DispatcherQueue para o InputObject. (Herdado de InputObject) |
Métodos
GetForIsland(ContentIsland) |
Recupera um InputPointerSource objeto para o ContentIsland especificado. |
Eventos
PointerCaptureLost |
Ocorre quando um ponteiro em contato com esse InputPointerSource se move para outro destino de entrada. |
PointerEntered |
Ocorre quando um ponteiro se move para os limites deste InputPointerSource. |
PointerExited |
Ocorre quando um ponteiro sai dos limites deste InputPointerSource. |
PointerMoved |
Ocorre quando um ponteiro se move dentro dos limites deste InputPointerSource. |
PointerPressed |
Ocorre quando um botão do mouse é pressionado ou um dedo ou caneta inicia o contato com a superfície do digitalizador, enquanto está dentro dos limites deste InputPointerSource. |
PointerReleased |
Ocorre quando um dispositivo de ponteiro que iniciou anteriormente uma ação Pressionar é liberado (um botão do mouse é liberado ou um contato de toque ou caneta é retirado da superfície do digitalizador), enquanto está dentro dos limites deste InputPointerSource. |
PointerRoutedAway |
Ocorre quando um ponteiro é redirecionado para outro InputPointerSource (possivelmente em um processo separado). |
PointerRoutedReleased |
Ocorre quando o ponteiro s que foi roteado para um InputPointerSource diferente é liberado nesse outro destino de entrada. |
PointerRoutedTo |
Ocorre quando um ponteiro é roteado para esse InputPointerSource de um destino de entrada diferente. |
PointerWheelChanged |
Ocorre quando a roda do mouse é girada (o valor delta da roda é alterado). |