События Windows Touch и Mouse

У нас есть приложение, построенное на более старой платформе (Qt 3.3.5), которое мы предпочли бы не пытаться обновлять для распознавания сенсорных событий.

Мы недавно обновили его с win32-msvc2005 в win32-msvc2013, По большей части все прошло хорошо, но планшеты (для тестирования, Surface Pro на Windows 8.1), которые отправляли события мыши при компиляции с 2005 года, теперь отправляют только WM_POINTER события, когда сенсорный экран используется в скомпилированном приложении 2013 года.

Мне не удалось найти способ заставить Windows отправлять мне события мыши для сенсорного ввода снова. Мое исследование подразумевает, что если я зарегистрируюсь для WM_TOUCH события, которые я должен также получить события мыши (как указывают многие люди в интернете, сердитые из-за того, что они получают события мыши со своими WM_TOUCH события), но мои (предположительно) удачные звонки RegisterTouchWindow кажется, на самом деле не позволяют WM_TOUCH события (или любые события мыши), и я все еще получаю события указателя.

Я чувствую, что, должно быть, я упускаю что-то очевидное, особенно из-за невозможности получить WM_TOUCH события (которые я даже не хочу, но якобы принесу мне мышиные события), но что бы это ни было, оно ускользает от меня. (Предположительно, это должно быть RegisterTouchWindow не вызывать для конкретного hwnd Я на самом деле касаюсь экрана, но дошел до того, что RegisterTouchWindow позвоните конкретно, увидев любой WM_POINTERUPDATE событие для hwnd которое породило событие и выдает результат вызова Register, когда оно возвращает значение true, а оно возвращает значение true, так что это кажется невозможным в качестве причины.)

Я тоже звоню DefWindowProc на все WM_TOUCH/GESTURE/POINTER события, которые являются единственной вещью, которую Интернет, по-видимому, считает необходимой для того, чтобы события правильно вписывались в более простые события. Рамки не вызывает RegisterRawInputDevices и не пытается справиться WM_INPUT события (которые он не получил бы в любом случае благодаря тому, что не был зарегистрирован для необработанного ввода). Любые события, не обработанные явно, должны DefWindowProc вызов.

Есть ли способ, с помощью которого старые приложения, такие как наше, могут перейти на более новую версию msvc, не испытывая трудностей в обучении платформы правильной обработке различных сенсорных протоколов? Как приложение, которое прекрасно работало на msvc2005 с использованием встроенного в Windows преобразования событий касания мыши, возвращает эту функциональность обратно в msvc2013?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]