MVS子进程进度实时显示
来源:互联网 发布:des算法f函数 编辑:程序博客网 时间:2024/06/08 14:28
在整合MVS整个流程的时候调用的子进程是比较耗时的操作,执行子进程的时候会暂停父进程的执行,多线程的主线程被阻塞,所以MFC的消息循环也会停止,这样updateData得不到及时显示,而是在一个大的模块执行完之后消息循环重新开始时才整个的显示,这当然不是我们所希望的,这个小问题也折磨了好久,解决方案自然是绕过消息队列里的循环直接执行:
UpdateWindow()
如果窗口更新的区域不为空,UpdateWindow函数通过发送一个WM_PAINT消息来更新指定窗口的客户区。函数绕过应用程序的消息队列,直接发送WM_PAINT消息给指定窗口的窗口过程,如果更新区域为空,则不发送消息。
m_out_control.UpdateWindow();
这样就可以实时的现实进度信息了
只将窗口显示区域标记为无效以产生WM_PAINT消息,对于某些应用程序来说也许不是完全令人满意的选择。在呼叫InvalidateRect之后,Windows将WM_PAINT消息放入消息队列中,最后由窗口消息处理程序处理它。然而,Windows将WM_PAINT消息当成低优先级消息,如果系统有许多其它的动作正在发生,那么也许会让您等待一会儿工夫。这时,当对话框消失时,将会出现一些空白的「洞」,程序仍然等待更新它的窗口。
如果您希望立即更新无效区域,可以在呼叫InvalidateRect之后呼叫UpdateWindow:
UpdateWindow (hwnd) ;
如果显示区域的任一部分无效,则UpdateWindow将导致Windows用WM_PAINT消息呼叫窗口消息处理程序(如果整个显示区域有效,则不呼叫窗口消息处理程序)。这一WM_PAINT消息不进入消息队列,直接由Windows呼叫窗口消息处理程序。窗口消息处理程序完成更新后立即退出,Windows将控制传回给程序中UpdateWindow呼叫之后的叙述。
您可能注意到,UpdateWindow与WinMain中用来产生第一个WM_PAINT消息的函数相同。最初建立窗口时,整个显示区域内容变为无效,UpdateWindow指示窗口消息处理程序绘制显示区域。
似乎并非如此,窗口还没更新显示就进入了后续计算密集型操作中
- MVS子进程进度实时显示
- 图片加载进度实时显示
- Python显示进度条,实时显示处理进度
- [js效果] 图片加载进度实时显示
- js效果 图片加载进度实时显示
- javascript使图片加载进度实时显示
- 子进程 信息显示
- 雷击程序(八)------实时显示雷击点生成进度
- 让ajax更加友好,实时显示后台处理进度。
- Android DownloadManager下载文件,实时显示下载进度
- Struts2实现文件上传并显示实时进度
- Groovy下载文件并实时显示下载进度
- Struts2实现文件上传并显示实时进度
- 关于 javaweb的文件上传实时显示进度
- python 实时获取子进程输出
- python subprogress子进程实时输出
- top命令:实时显示进程资源
- 信号编程实例:父进程拷贝文件,子进程定期询问进度
- 浮点DSC使控制系统如虎添翼
- 最大01 子矩阵
- 【操作系统】linux--kernel路径,相关内核函数
- VS2010 VS2005 VS2008工程之间的转换
- 选修课:唐宋词鉴赏课堂笔记03
- MVS子进程进度实时显示
- 在DataSet中处理字段中的NULL问题入门6
- design
- 代码分享,寻找两个字符串的相似度。 ios版本
- 如何在DLL的输出函数中返回字符串给调用者
- 显卡结构与工作原理解读
- TMS320F2812产生PWM波程序
- 在DataSet中实现纪录删除的自定义方法入门7
- F2812中程序从Flash中搬运到SRAM中运行加快速度