Windows Touch和鼠标事件

时间:2015-11-11 05:05:26

标签: c++ winapi touchscreen

我们有一个基于旧框架(Qt 3.3.5)构建的应用程序,我们不希望尝试升级以识别触摸事件。

我们最近将其从win32-msvc2005升级为win32-msvc2013。在大多数情况下,这已经很好了,但是在2005年编译时发送鼠标事件的平板电脑(用于测试目的,Windows 8.1上的Surface Pro)现在只发送WM_POINTER事件,当2013年使用触摸屏时编译申请。

我一直无法找到让Windows再次向我发送触摸屏输入鼠标事件的方法。我的研究表明,如果我注册WM_TOUCH事件,我应该also get mouse events(正如互联网上的许多人对他们WM_TOUCH事件中的鼠标事件感到愤怒所表示的那样),但是我(据说)成功调用RegisterTouchWindow似乎并没有实际启用WM_TOUCH事件(或任何鼠标事件),我仍然收到指针事件。

我觉得我必须遗漏一些显而易见的事情,特别是因为无法获得WM_TOUCH事件(我甚至不想要,但据说会让我发现鼠标事件),但不管它是什么继续逃避我(据推测,我必须RegisterTouchWindow没有为我在屏幕上实际触摸的特定hwnd进行调用,但我已经把RegisterTouchWindow电话专门用于看到产生事件的WM_POINTERUPDATE的任何hwnd事件,并在返回true时输出Register调用的结果并返回true,因此这似乎不可能作为原因。)

我还在所有DefWindowProc事件上调用WM_TOUCH/GESTURE/POINTER,这是互联网似乎认为可能需要事件正确地冒泡到更基本的事件所必需的事情。该框架不会调用RegisterRawInputDevices并且不会尝试处理WM_INPUT事件(由于未注册原始输入而无法接收它)。任何未明确处理的事件都应该落入DefWindowProc电话。

是否有一种方法可以让像我们这样的旧应用程序转移到更新的msvc,而无需经历教学框架以正确处理各种触摸协议的痛苦?使用内置的Windows触摸鼠标事件转换在msvc2005上运行良好的应用程序如何在msvc2013中恢复该功能?

0 个答案:

没有答案