1

在 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 支持触摸事件时,我错过了什么吗?谢谢。

4

1 回答 1

0

DoDragDrop()确实支持 Win7/8 上的触摸(是的,文件的 D&D 是由 Windows Explorer 使用 实现的DoDragDrop()),所以你的问题与其他问题有关。您是否检查过是否DoDragDrop()将任何错误代码返回到您可能忽略的代码中?

于 2013-03-11T18:24:02.817 回答