Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何拖动&;在不占用系统资源的情况下删除大量文件?_C++_Windows_Mfc_Drag And Drop - Fatal编程技术网

C++ 如何拖动&;在不占用系统资源的情况下删除大量文件?

C++ 如何拖动&;在不占用系统资源的情况下删除大量文件?,c++,windows,mfc,drag-and-drop,C++,Windows,Mfc,Drag And Drop,我正在使用的程序的一个功能是能够从主窗口拖动对象,并将它们作为文件放到Windows资源管理器中 为此,我们重写COleDataSource::OnRenderGlobalData(),当格式为CF\u HDROP时,我们将每个对象保存为一个文件。当对象的数量较少时,此操作效果良好 然而,当我们现在致力于支持企业级的大量对象时,当用户试图将大量对象从应用程序拖到Windows资源管理器中时,我们会看到很大的延迟,有时会导致挂起或最终崩溃 我猜这是因为OnRenderGlobalData()被调用

我正在使用的程序的一个功能是能够从主窗口拖动对象,并将它们作为文件放到Windows资源管理器中

为此,我们重写
COleDataSource::OnRenderGlobalData()
,当格式为
CF\u HDROP
时,我们将每个对象保存为一个文件。当对象的数量较少时,此操作效果良好

然而,当我们现在致力于支持企业级的大量对象时,当用户试图将大量对象从应用程序拖到Windows资源管理器中时,我们会看到很大的延迟,有时会导致挂起或最终崩溃

我猜这是因为
OnRenderGlobalData()
被调用了很多次,当然,每次它都必须循环遍历正在拖动的对象并将它们保存为文件

我正在研究重写
OnRenderFileData()
的想法,但问题是它一次只处理一个文件


当用户试图将大量对象拖到Windows资源管理器上时,有没有什么方法可以加快我们的应用程序的速度,最好是将保存循环移动到实际拖放时只能执行一次的位置?

我也有同样的问题。我的“解决方案”不是很聪明。我提供drag'n'drop是为了方便一些对象。如果用户选择的对象数量超过了可以很好地处理的对象数量,则会禁用拖放,用户必须从文件夹浏览器对话框中选择目标。选择目标后,对象将作为文件写入其中,并带有进度指示器。

拖动拖放时生成的虚拟数据,而不是创建文件。提供CFSTR_FILEGROUPDESCRIPTOR和CFSTR_FILECONTENTS

什么是源对象?它们是由一个文件来支持的吗?与将相等数量的对象从Outlook文件夹拖动到桌面相比,拖放的性能如何?我有一些拖放代码可供参考以获得答案,但我想了解更多有关数据的信息。@selbie:源对象是垂直市场应用程序中的项目,而不是从一开始就由文件进行备份。与从Outlook文件夹中拖动同等数量的对象相比,性能似乎要快得多。(我测试了60封电子邮件,而我们的对象只有60封。)当用户试图将大量这些对象(几百个或更多,这在大型网站上很常见,如大学校园、大型建筑等)拖到Windows资源管理器中时,就会出现问题。请详细解释。如何将“虚拟数据”(不管是什么)放到windows资源管理器中,并创建一个以前不是由作为数据源的应用程序创建的文件?该技术看起来确实很有趣。这是一篇非常面向MFC的codeproject文章,它解释了更多的内容,这是正确的答案。将“虚拟文件”拖放到目标文件夹中时,会在完成拖放后从windows资源管理器对源应用程序OnRenderFileData()方法执行远程过程调用。现在,源应用程序可以花多长时间编写文件,显示进度指示等。拖动开始时,不会创建临时文件。codeproject文章是一个起点——这里提供的代码编译和运行都很干净。这听起来很有用。谢谢