MFC:Windows 类似资源管理器的应用程序,用于与其主线程并行导出文件

MFC: Windows Explorer-like application to export files in parallel with its main thread

真正专家的问题:OLE 目标上的粘贴操作如何导致 OLE 源开始提供数据?

我正在为某处copy/cut/paste 虚拟文件from/to 创建一个基于MFC 的Windows 类似资源管理器的应用程序(使用拖放和OLE 剪贴板)。我现在遇到的问题是如何使文件导出与主 window 线程并行。如前所述,它是一个 MFC 应用程序,因此我在 COleDataSource::OnRenderFileData 函数中导出虚拟文件内容。这个函数在应用程序中没有显式调用,但它是由主 window 线程调用的。我深入研究了它,发现 MFC 处理由文档的 OnCmdMsg 函数处理的某个命令 (CN_COMMAND) - 这解释了主线程如何调用 OnRenderFileData.

但是当我使用旧版(但免费)MFC4.2 开发 VS2010 Express 版本时,我无法找到 MFC 主程序接收(来自 COM?)和处理某些神奇消息的位置线。我想覆盖这一点以使虚拟文件与应用程序的主线程并行导出。

非常感谢任何建议

托马斯

您所说的"magical"消息是WM_RENDERFORMAT,发送给请求延迟渲染的剪贴板所有者。

我相信您应该在从该消息处理程序返回SetClipboardData() 之前调用,所以我看不到另一个线程如何工作;调用者将在 SendMessage(..., WM_RENDERFORMAT, ...) returns.

后立即尝试访问剪贴板上的数据

P.S。您使用 Express 版本有什么原因吗? Visual Studio(2013 和 2015)的新版本在 Community Edition 中可用,可免费用于实验和教育用途,其中一些。它还包括现代版本的 MFC。