문제

태블릿 펜 이벤트에서 도움이되지 않는 사전 처리를하지 말라고 Windows에게 어떻게 말할 수 있습니까?

Python 2.6에서 프로그래밍하여 Windows 7을 실행하는 태블릿 PC를 대상으로합니다 (스마트 인터랙티브 화이트 보드와 Linux/Mac의 마우스 사용자를 사용하여 XP에서 거의 수정하지 않기를 원합니다. 나는 일반적인 Windows 마우스 이벤트, wm_mousemove 등에 연결하는 프로그램을 작성하고 캔버스에 씁니다.

문제는 마우스 메시지가 내 응용 프로그램에 도달하기 전에 충격을 받고 있다는 것입니다. 긴 스트로크를 만들고 뇌졸중 사이에 일시 중지하면 마우스 메시지가 제대로 전송된다는 것을 알았습니다. 그러나 몇 번의 빠른 짧은 스트로크를한다면, 무언가가 도움이되지 않는 사전 프로세싱을하고 있습니다. 구체적으로, 약 10 픽셀 길이의 다운 스트로크를 만들고 첫 번째 오른쪽에 5 개의 픽셀에 대해 다른 다운 스트로크를 만들면 두 번째 WM_Mousedown은 첫 번째와 정확히 같은 장소에서 나온다고보고합니다.

이것은 일종의 사전 프로세싱처럼 보이므로 순진한 응용 프로그램이 두 번 클릭에 대해 혼란스러워지지 않습니다. 그러나 빠른 제스처에 대한 매우 충실한 반응을 원하는 내 응용 프로그램의 경우 도움이되지 않습니다.

MicrosoftTableTpenserviceProperty Atom과 CS_DBLCKS Window 스타일에 대한 참조를 찾았고 다음과 같은 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) 

그러나 그것은 효과가 없습니다.

Setwindowshookex를 사용하여 마우스 드라이버에 대한 낮은 수준의 후크를 작성하려고 시도했지만 작동하지 않습니다. 분명히 마우스 메시지가 저수준 Windows 후크로 전송되기 전에 사전 처리되고 있습니다.

이 사전 프로세싱을 끄는 방법에 대한 조언에 감사드립니다. Windows XP Plus Smart Interactive Whiteboard에서 작동하지 않기 때문에 RealTimestyLus로 전환하고 싶지 않습니다. CPYTHON에서 RealTimestyLus를 사용하는 방법을 알 수 없으므로 Ironpython으로 전환해야합니다. 내 코드는 더 이상 Linux/Mac에서 실행되지 않습니다.

데이먼.

도움이 되었습니까?

해결책

원시 마우스 메시지의 경우 사용할 수 있습니다 WM_INPUT XP와 나중에. 7 개는 약간의 터치 특정 물건을 추가했습니다. WM_GESTURE 그리고 WM_TOUCH

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top