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。
真正专家的问题: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。