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
- Наследование
- Атрибуты
Примеры
В следующем примере показано, как настроить 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 соответствуют гарантированному заказу в обычных обстоятельствах:
- Указатель введите
- PointerPressed
- PointerMoved
- PointerReleased
- PointerExited
Где PointerMoved будет вызываться только при перемещении указателя или состояния кнопки на изменении мыши. Все события имеют один и тот же идентификатор указателя.
Запись указателя потеряна
PointerCaptureLost возникает, когда указатель на контакт направляется в другой целевой объект ввода системой ввода. При вызове PointerCaptureLost, которое произойдет только после получения PointerPressed, дополнительные события не будут возникать для этого указателя. В частности, PointerReleased и PointerExited не будут вызваны, поэтому следует обрабатывать PointerCaptureLost как допустимое состояние конца для заданного указателя. Ниже приведен пример допустимой последовательности событий, включающих потерю записи указателя:
- Указатель введите
- PointerPressed
- PointerMoved
- PointerCaptureLost
Перенаправленные события
Перенаправленные события указателя возникают при перенаправлении указателя на другой целевой объект ввода входной системой. В отличие от PointerCaptureLost, перенаправленные события обеспечивают возможность перенаправления указателя в контакте до выхода указателя.
Ниже показана допустимая последовательность событий, в которой указатель контакта направляется в другой целевой объект, перенаправленный обратно в исходный InputPointerSource, а затем выпущен:
- Указатель введите
- PointerPressed
- PointerMoved
- PointerRoutedAway
- PointerRoutedTo
- PointerReleased
- PointerExited
Ниже приведен пример допустимой последовательности событий, в которых указатель контакта направляется в другой целевой объект, а затем освобождается на другом целевом объекте:
- Указатель введите
- PointerPressed
- PointerMoved
- PointerRoutedAway
- PointerRoutedReleased
Заметка
При вызове PointerRoutedReleased дополнительные события не будут возникать для этого указателя. В частности, PointerReleased и PointerExited не будут вызваны, поэтому следует обрабатывать PointerRoutedReleased как допустимое состояние конца для заданного указателя.
Кроме того, можно получить новый контактный указатель, который был перенаправлен из другого целевого объекта. В этом случае события PointerRoutedTo и PointerPressed гарантированно предшествуют PointerRoutedTo, если указатель еще не был замечен текущим InputPointerSource. Ниже приведен пример этой последовательности событий:
- Указатель введите
- PointerPressed
- PointerRoutedTo
- PointerMoved
- PointerReleased
- PointerExited
Свойства
Cursor |
Возвращает или задает курсор, отображаемый, когда указатель мыши или пера находится на входном целевом объекте, Visual или WindowId (HWND) этого InputPointerSource. |
DeviceKinds |
Возвращает типы устройств, поддерживаемые этим InputPointerSource. |
DispatcherQueue |
Возвращает диспетчера |
Методы
GetForIsland(ContentIsland) |
Извлекает объект inputPointerSource |
События
PointerCaptureLost |
Происходит, когда указатель в контакте с этим InputPointerSource перемещается в другой целевой объект ввода. |
PointerEntered |
Происходит при перемещении указателя в границы этого InputPointerSource. |
PointerExited |
Происходит при перемещении указателя из границ этого InputPointerSource. |
PointerMoved |
Происходит при перемещении указателя в пределах этой InputPointerSource. |
PointerPressed |
Происходит при нажатии кнопки мыши или пальца или пера, инициирующего контакт с поверхностью дигитайзера, в то время как в пределах этой InputPointerSource. |
PointerReleased |
Происходит, когда устройство указателя, которое ранее инициировало действие нажатия (кнопка мыши освобождается, или сенсорный или перо контакт поднимается с поверхности дигитайзера), в то время как в пределах этой InputPointerSource. |
PointerRoutedAway |
Происходит при перенаправлении указателя на другой InputPointerSource (возможно, в отдельном процессе). |
PointerRoutedReleased |
Происходит, когда указатель, который был перенаправлен на другой InputPointerSource, освобождается в другом целевом объекте ввода. |
PointerRoutedTo |
Происходит при перенаправлении указателя на этот InputPointerSource из другого целевого объекта ввода. |
PointerWheelChanged |
Происходит при повороте колесика мыши (разностное значение колеса). |