Получение сообщений WM_TOUCH из каждого окна и обработка в моем приложении - PullRequest
1 голос
/ 15 января 2011

Я занимаюсь разработкой приложения с сенсорным экраном.Цель приложения - когда конечный пользователь собирается совершить вертикальное сенсорное движение (вертикальная линия пальцем) на экране на устройстве с сенсорным экраном в Windows7, все активные окна должны быть свернуты (что-то вроде отображения рабочего стола).У меня вопрос, как я могу обработать все сообщения WM_TOUCH, которые происходят везде в каждом окне, которое активно на рабочем столе.Нет оконного хука, с помощью которого я могу взять все сообщения WM_TOUCH.Я пытался использовать WH_GETMESSAGE с надеждой, что смогу извлечь сообщения WM_TOUCH, но это не работает, я попытался использовать WH_MOUSE_LL и получил все события мыши.Существует функция GetMessageExtraInfo, с помощью которой я могу видеть, откуда сообщения мыши инициируются с помощью этого кода:

if ((GetMessageExtraInfo (). ToInt32 () & MOUSEEVENTF_FROMTOUCH) == 0xFF515700) {textBoxLog.AppendTadaxt as («);} если это правда, то сообщение инициируется устройством TouchScreen.Это работает только с сообщениями, которые отправляются из моего приложения (активного окна моего приложения), но не с сообщениями мыши, которые я получаю из других окон за пределами окна моего приложения.Я исследую эту тему некоторое время и до сих пор не могу получить никакого ответа.Поэтому, пожалуйста, если кто-нибудь знает, как я могу получить все сообщения WM_TOUCH для моего приложения, пожалуйста, ответьте.

Михаил

Ответы [ 2 ]

1 голос
/ 15 января 2011

Вы должны перехватить глобальное сообщение proc.Таким образом, вы первым получите все сообщения.То, как вы это делаете, не будет работать, потому что ваш wndproc активен только тогда, когда ваши окна активны.

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

http://msdn.microsoft.com/en-us/library/ms644990%28v=vs.85%29.aspx

0 голосов
/ 14 августа 2013

Согласно подобному обсуждению Windows DevCenter это кажется невозможным:

В Windows 7 нет хорошего способа отловить сенсорный ввод в глобальном масштабе. Как упоминал Боб, окна должны быть специально зарегистрированы для получения сенсорного ввода, и это не то, что можно безопасно сделать для окон других приложений. *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...