У меня есть приложение WPF, которое можно использовать как с помощью мыши, так и с помощью Touch. Я отключу все "усовершенствования" окон, чтобы просто иметь события касания:
Stylus.IsPressAndHoldEnabled="False"
Stylus.IsTapFeedbackEnabled="False"
Stylus.IsTouchFeedbackEnabled="False"
Stylus.IsFlicksEnabled="False"
В результате клик ведет себя так, как я хочу, за исключением двух точек:
- Маленький "сенсорный" курсор (маленькая белая звезда) появляется, когда щелкнул при перетаскивании.
Совершенно бесполезно, поскольку пользовательский палец уже находится в этом месте, никакая обратная связь не требуется (кроме моего элемента, который может изменить цвет, если это возможно). - Элементы остаются в состоянии "Hover" после окончания движения/клика.
Оба являются следствием того факта, что, хотя окна правильно передают события касания, он по-прежнему перемещает мышь к последнему событию с основным касанием.
Я не хочу, чтобы окна перемещали мышь вообще, когда я использую touch внутри своего приложения. Есть ли способ полностью избежать этого?
Примечания:
- Обработка событий касания ничего не меняет.
- Используя SetCursorPos, чтобы переместить мышь, сделайте курсор мигающим и не очень удобным для пользователя.
- Отключение сенсорной панели в качестве устройства ввода полностью отключает все события (И я также предпочитаю локальное решение приложения, а не системное).
- Мне все равно, если решение включает COM/PInvoke или предоставляется в C/С++, я переведу.
- Если необходимо запланировать или перехватить некоторые DLL файлы Windows, пусть и это, программное обеспечение будет работать на выделенном устройстве.
- Я изучаю поверхностный SDK, но я сомневаюсь, что он покажет любое решение. Поскольку поверхность является устройством с чистым касанием, нет риска плохого взаимодействия с мышью.