Поделиться через


InputPointerSource Класс

Определение

Представляет объект, зарегистрированный для ввода указателя отчета, и предоставляет курсор указателя и обработку входных событий.

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
Наследование
Object Platform::Object IInspectable InputObject InputPointerSource
Атрибуты

Примеры

В следующем примере показано, как настроить SwapChainPanel с помощью CreateCoreIndependentInputSource и получения низкой задержки пера и сенсорного ввода в фоновом потоке через 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();
}

В этом примере показано, как настроить изображение курсора системы для отображения при наведении курсора на 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);

Комментарии

Пространство координат для событий указателя находится в том же пространстве координат, что и объект SwapChainPanel.

Порядок событий

Обычный регистр

События указателя InputPointerSource соответствуют гарантированному заказу в обычных обстоятельствах:

  1. Указатель введите
  2. PointerPressed
  3. PointerMoved
  4. PointerReleased
  5. PointerExited

Где PointerMoved будет вызываться только при перемещении указателя или состояния кнопки на изменении мыши. Все события имеют один и тот же идентификатор указателя.

Запись указателя потеряна

PointerCaptureLost возникает, когда указатель на контакт направляется в другой целевой объект ввода системой ввода. При вызове PointerCaptureLost, которое произойдет только после получения PointerPressed, дополнительные события не будут возникать для этого указателя. В частности, PointerReleased и PointerExited не будут вызваны, поэтому следует обрабатывать PointerCaptureLost как допустимое состояние конца для заданного указателя. Ниже приведен пример допустимой последовательности событий, включающих потерю записи указателя:

  1. Указатель введите
  2. PointerPressed
  3. PointerMoved
  4. PointerCaptureLost

Перенаправленные события

Перенаправленные события указателя возникают при перенаправлении указателя на другой целевой объект ввода входной системой. В отличие от PointerCaptureLost, перенаправленные события обеспечивают возможность перенаправления указателя в контакте до выхода указателя.

Ниже показана допустимая последовательность событий, в которой указатель контакта направляется в другой целевой объект, перенаправленный обратно в исходный InputPointerSource, а затем выпущен:

  1. Указатель введите
  2. PointerPressed
  3. PointerMoved
  4. PointerRoutedAway
  5. PointerRoutedTo
  6. PointerReleased
  7. PointerExited

Ниже приведен пример допустимой последовательности событий, в которых указатель контакта направляется в другой целевой объект, а затем освобождается на другом целевом объекте:

  1. Указатель введите
  2. PointerPressed
  3. PointerMoved
  4. PointerRoutedAway
  5. PointerRoutedReleased

Заметка

При вызове PointerRoutedReleased дополнительные события не будут возникать для этого указателя. В частности, PointerReleased и PointerExited не будут вызваны, поэтому следует обрабатывать PointerRoutedReleased как допустимое состояние конца для заданного указателя.

Кроме того, можно получить новый контактный указатель, который был перенаправлен из другого целевого объекта. В этом случае события PointerRoutedTo и PointerPressed гарантированно предшествуют PointerRoutedTo, если указатель еще не был замечен текущим InputPointerSource. Ниже приведен пример этой последовательности событий:

  1. Указатель введите
  2. PointerPressed
  3. PointerRoutedTo
  4. PointerMoved
  5. PointerReleased
  6. PointerExited

Свойства

Cursor

Возвращает или задает курсор, отображаемый, когда указатель мыши или пера находится на входном целевом объекте, Visual или WindowId (HWND) этого InputPointerSource.

DeviceKinds

Возвращает типы устройств, поддерживаемые этим InputPointerSource.

DispatcherQueue

Возвращает диспетчера для InputObject.

(Унаследовано от InputObject)

Методы

GetForIsland(ContentIsland)

Извлекает объект inputPointerSource для указанного ContentIsland.

События

PointerCaptureLost

Происходит, когда указатель в контакте с этим InputPointerSource перемещается в другой целевой объект ввода.

PointerEntered

Происходит при перемещении указателя в границы этого InputPointerSource.

PointerExited

Происходит при перемещении указателя из границ этого InputPointerSource.

PointerMoved

Происходит при перемещении указателя в пределах этой InputPointerSource.

PointerPressed

Происходит при нажатии кнопки мыши или пальца или пера, инициирующего контакт с поверхностью дигитайзера, в то время как в пределах этой InputPointerSource.

PointerReleased

Происходит, когда устройство указателя, которое ранее инициировало действие нажатия (кнопка мыши освобождается, или сенсорный или перо контакт поднимается с поверхности дигитайзера), в то время как в пределах этой InputPointerSource.

PointerRoutedAway

Происходит при перенаправлении указателя на другой InputPointerSource (возможно, в отдельном процессе).

PointerRoutedReleased

Происходит, когда указатель, который был перенаправлен на другой InputPointerSource, освобождается в другом целевом объекте ввода.

PointerRoutedTo

Происходит при перенаправлении указателя на этот InputPointerSource из другого целевого объекта ввода.

PointerWheelChanged

Происходит при повороте колесика мыши (разностное значение колеса).

Применяется к

См. также раздел