在Windows平板电脑上与Delphi VCL长时间接触
我为在
Windows 8.1平板电脑上运行的VCL应用程序创建了一个
TCustomControl派生类.
我正在使用OnMouseDown/OnMouseUp事件,即使这显然是基于触摸的. 我想做的是检测长按 – 即触摸并保持1秒钟.因此,在OnMouseDown事件中,我记录了向下时间戳,设置一个标志以指示鼠标已关闭,并创建一个休眠1秒钟的匿名线程,然后检查该标志. 在OnMouseUp中,我将标志设置为false. 只要您在控件上摆动手指,这就可以正常工作.否则,如果您只是触摸并按住鼠标,则在释放手指之前不会调用事件. 我看一下手势,但这看起来完全矫枉过正,而且据我所知不支持长按. 谢谢你的任何建议. 理查德 解决方法
您所面临的是具有触摸输入设备的Windows的“正常”但可笑的愚蠢行为.我们暂时面临同样的问题,并且正在努力在过去几周内积极解决这个问题.
诀窍是,窗口将触摸输入设备称为“鼠标,可以用单指完全控制”.因此,它有几个状态,不仅仅是事件: 事件包括:触摸开始(向下),移动,向上,向右键,如果你真的想注册一个回调,你将变得静止(自上次报告以来没有移动但仍然下降). 与此同时,还有更多州.首先,当您用手指按下时,它会在内部检测到“触摸!”事件.它等待一定的时间(可能会或可能不会被黑客改变,取决于驱动程序等……),以确定你想要的是右键点击(x时间之后,释放后!时间!它会触发右键单击事件)或是否是左键单击(触发事件TouchBegin – 在y时间之后,比x时间更长,在y到期之后,它将触发向左事件(不是单击! )). 为了更简单和可理解,我将试着举个例子: 假设你有触摸设备,时间如下: 你将手指触摸,然后开始时间线. >在到达X点之前触发(do)移动事件 – >触发左下,然后检测到它的移动事件数,直到你释放它为止 – >然后被触发了 希望这对你有意义. 现在跳转到可能的解决方案:自定义驱动程序将是一个选项,但我们还没有,所以我们仍在尝试其他选项.现在最有希望的似乎是使用RAW_INPUT和Touch钩子,看起来我们必须将它们组合起来才能得到我们想要的东西. 同时,Android更好地处理这些事情…… 希望它有所帮助,我很高兴能够在我们完成后获得完整的解决方案并获得足够好用的东西. M. * (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |