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

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

本文关键字:线程 导出文件 并行 类似于 Windows 资源管理器 应用程序 MFC      更新时间:2023-10-16

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

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

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

非常感谢您的任何建议

托马斯

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

我相信您应该调用SetClipboardData()BEFORE从该消息处理程序返回,所以我不知道另一个线程如何工作;呼叫者将在他的CCD_ 7一返回就尝试访问剪贴板上的数据。

附言:你使用Express版本有什么原因吗?Visual Studio的新版本(2013和2015)在Community Edition中提供,它是免费的,可用于实验和教育用途,还有一些。它还包括MFC的现代版本。