MFC:类似于Windows资源管理器的应用程序,可以与主线程并行导出文件
MFC: Windows Explorer-like application to export files in parallel with its main thread
真正的专家要问的一个问题是: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的现代版本。
相关文章:
- boost::文件系统::recursive_directory_iterator多线程安全
- 如何声明由多个线程调用的 C++ DLL 的内部类,而无需导出类
- 两个线程一个使用流 Api,另一个线程创建文件失败并出现错误ERROR_SHARING_VIOLATION
- 在C++中写入来自不同线程的文件
- 线程 1 从文件读取,就像线程 2 写入同一文件一样
- 多个线程/进程是否可以在不同步的情况下同时从/写入文件的非重叠区域?
- 多线程和共享资源:使用C++定期将数据从缓冲区(数据结构)复制到文件
- C++中的多线程文件哈希
- C++:如何在线程中读取二进制文件并将其写入另一个线程?
- 在Qt中使用工作线程将数据写入文件的正确方法是什么?
- 我们是否需要互斥锁来执行多线程文件 IO
- Borland C++ 5.02 中使用第三方头文件的多线程
- 多线程文件 IO 程序在线程数增加时行为不可预测
- 多线程存储到文件中
- c++多线程读取文件
- 使用C 中的Windows API使用多线程列出文件
- 从导致AccessViolationException的线程访问文件缓冲区
- 使用Boost 1.55线程和文件系统并发内存损坏(Visual Studio 2013)
- 多线程写入文件c++
- 从多个线程调用C文件中的函数