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