在 Windows 上,拖放操作可以通过 COM DoDragAndDrop API 完成,参见http://msdn.microsoft.com/zh-cn/library/windows/desktop/ms678486%28v=vs.85%29.aspx。它可以完美地进行D&D操作,具有最佳的系统集成度。
最近,我发现它不是触摸友好的 API,它不能很好地处理触摸事件。在 Window 7/8 上,由 CreateWindow API 创建的 Win32 窗口也能够以与处理鼠标事件相同的方式处理触摸事件。Actullay,似乎将触摸事件转换为类似的鼠标事件,例如当手指按下时触发鼠标按下事件,当手指移动时触发鼠标移动事件。
但是,DoDragAndDrop COM API 不会将触摸事件转换为鼠标事件,甚至 COM 服务根本不知道触摸事件。但是我尝试将文件从一个文件夹拖到 Win8 上的另一个文件夹,它可以工作。如果 D&D 操作也是基于 COM API 实现的,我确实得到了一个矛盾的结果。
当我使用 DoDragAndDrop 支持触摸事件时,我错过了什么吗?谢谢。