Точный ответ на события планшета/мыши в Windows

StackOverflow https://stackoverflow.com/questions/1490011

  •  18-09-2019
  •  | 
  •  

Вопрос

Как я могу сказать Windows не делать бесполезной предварительной обработки на таблетовых ручках?

Я программируюсь в Python 2.6, нацеленная на планшетные ПК, работающие с Windows 7 (хотя я бы хотел, чтобы моя программа работала с небольшими изменениями на XP с интеллектуальной интерактивной доской и для пользователей мышей на Linux/Mac). Я написал программу, которая зацепляется в обычные события мыши Windows, WM_MouseMove и т. Д., И пишет на холсте.

Проблема в том, что мышиные сообщения оправляются до того, как они достигнут моего приложения. Я обнаружил, что если я сделаю длинные удары и паузу между ударами, то сообщения мыши отправляются должным образом. Но если я сделаю несколько быстрых коротких ударов, то что-то делает бесполезную предварительную обработку. В частности, если я сделаю вниз по удару длиной около 10 пикселей, а затем сделаю еще один вниз примерно на пять пикселей справа от первого, то второй wm_mousedown сообщает, что он исходит из того же места, что и первое.

Это похоже на какую-то предварительную обработку, возможно, чтобы наивные приложения не были запутаны в двойном щелчке. Но для моего заявления, где я хочу очень верный ответ на быстрые жесты, это бесполезно.

Я нашел ссылку на атом MicrosoftTableTPenserviceProperty и в стиле окна CS_DBLCLKS, и я выключил их оба со следующим кусочком кода Python:

hwnd = self.GetHandle()  
tablet_atom = "MicrosoftTabletPenServiceProperty" 
atom_ID = windll.kernel32.GlobalAddAtomA(tablet_atom)  
windll.user32.SetPropA(hwnd,tablet_atom,1)  
currentstyle = windll.user32.GetClassLongA(hwnd, win32con.GCL_STYLE)  
windll.user32.SetClassLongA(hwnd, win32con.GCL_STYLE, currentstyle & ~win32con.CS_DBLCLKS) 

Но это не имеет никакого эффекта.

Я попытался написать крючок низкого уровня для драйвера мыши, с SetWindowShoekex, но он не работает-очевидно, что сообщения мыши предварительно обрабатываются еще до того, как они отправляются на мой крючок Windows низкого уровня.

Я был бы очень благодарен за совет о том, как отключить эту предварительную обработку. Я не хочу переходить на Realtimestylus - сначала потому, что он не будет работать на Windows XP Plus интерактивной интерактивной доске, во -вторых, потому что я не вижу, как использовать Realtimestylus в CPYTHON, поэтому мне нужно было бы переключиться на Ironpython, а затем Мой код больше не будет работать на Linux/Mac.

Деймон.

Это было полезно?

Решение

Для необработанных сообщений мыши вы можете использовать WM_INPUT на XP и позже. Семь добавили некоторые прикосновения конкретных вещей: WM_GESTURE а также WM_TOUCH

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top