作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在开发的程序的其中一个功能是能够将对象从其主窗口拖放到 Windows 资源管理器中作为文件。
为此,我们覆盖了 COleDataSource::OnRenderGlobalData()
,并且当格式为 CF_HDROP
时,我们将每个对象保存为一个文件。当对象数量很少时,这很好用。
但是,由于我们现在正致力于支持企业级数量的对象,因此当用户试图将大量对象从我们的应用程序拖到 Windows 资源管理器中时,我们看到了很大的延迟,有时会导致挂起或最终崩溃.
我猜这是因为 OnRenderGlobalData()
被调用了很多次,当然,每次它都必须循环遍历被拖动的对象并保存它们作为文件。
我正在研究覆盖 OnRenderFileData()
的想法,但问题是它一次只处理一个文件。
当用户试图将大量对象拖到 Windows 资源管理器上时,有什么方法可以加快我们的应用程序,最好是将保存循环移动到一个只有在实际放置发生时才能执行一次的地方?
最佳答案
不是创建文件,而是拖动在放置时生成的虚拟数据。提供 CFSTR_FILEGROUPDESCRIPTOR 和 CFSTR_FILECONTENTS。 Here's an example .
关于c++ - 如何在不占用系统资源的情况下拖放大量文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6868245/
我是一名优秀的程序员,十分优秀!