MSDN 2005 -> Win32 和 COM 开发 -> User Interface -> Windows User Experience -> Windows Shell -> Windows Shell -> Shell Programmer's Guide -> Shell Basics -> Transferring Shell Objects with Drag-and-Drop and the Clipboard
很多应用程序可以让用户通过鼠标拖放或者剪贴板把数据传输到其他程序中。像文件和文件夹这样的Shell对象是可以传输的众多数据类型之一。Shell数据传输可以发生在两个应用程序间,当然也可以在应用程序与桌面或者资源管理器间传输数据。
虽然最经常传输的Shell对象是文件,但Shell名字空间中的任何对象都是可以传输的。比如说,程序可能需要传输文件到像回收站这样的虚拟文件夹中,或者从非微软名字空间扩展处接受对象。如果要实现名字空间扩展,必须使它具有作为拖放源和拖放目标的正确行为。
本文讨论如何实现用拖放和剪贴板传输Shell对象。
Shell对象是如何被拖放的
应用程序通常要为用户提供传输Shell数据的方法。比如说:
- 从桌面或者资源管理器中拖动文件放置到应用程序中
- 在资源管理器中复制文件到剪贴板,然后粘贴到应用程序中
- 从应用程序中拖动文件放置到回收站中
关于如何处理这些情况和其他情况的详细讨论,见Handling Shell Data Transfer Scenarios,它讨论了Shell数据传输的一般原理。