触摸winapi上的滚动

触摸winapi上的滚动,winapi,scroll,touch,hook,mouseevent,Winapi,Scroll,Touch,Hook,Mouseevent,我想为纯WinAPI程序实现类似触摸滚动的行为。我已经呆了几天了 到目前为止,我尝试了几种方法。最成功的方法是使用EnableWindow(hwnd,false)禁用整个窗口,然后捕获所有鼠标事件并将其分派给子级。我可以使用GetCursorPos/GetTopWindow/GetNextWindow找到所有的孩子。 但现在它只适用于按钮和其他简单的东西。编辑控件将不响应,因为它处于禁用状态(因为整个窗口已禁用) 我也试过WM_PARENTNOTIFY。但这不会起作用,因为当您收到此消息时,您无

我想为纯WinAPI程序实现类似触摸滚动的行为。我已经呆了几天了

到目前为止,我尝试了几种方法。最成功的方法是使用EnableWindow(hwnd,false)禁用整个窗口,然后捕获所有鼠标事件并将其分派给子级。我可以使用GetCursorPos/GetTopWindow/GetNextWindow找到所有的孩子。 但现在它只适用于按钮和其他简单的东西。编辑控件将不响应,因为它处于禁用状态(因为整个窗口已禁用)

我也试过WM_PARENTNOTIFY。但这不会起作用,因为当您收到此消息时,您无法阻止孩子立即收到它。对于触摸式滚动,您需要它

这令人沮丧。我认为唯一的选择是对鼠标消息进行一些低级拦截。能够对它们进行排队,然后发送给子级,或者在实际滚动时放弃。但具体怎么做呢?我需要的是在鼠标事件转到子树之前在主窗口中获取它,并且如果我不想转到子树,在某些条件下能够停止此事件

没有它,我只能考虑使用键盘修改器。因此,当用户按下CONTROL(例如)时,整个窗口将被临时禁用,所有鼠标事件将进入滚动状态。但这是最后的手段。我希望有准确的“手机”行为,这样,如果你按下鼠标按钮并在100毫秒内开始移动-它将滚动,如果在100毫秒内没有检测到移动,那么事件将正常进行

我需要这个用于我的跨平台库,我希望它在包括Windows XP在内的所有平台上都能正常工作

多谢各位