VC单文档程序在菜单项遍历目录,想在遍历时设置进度条来显示工作进度,如何实现?

woshihuzi 2009-06-02 01:52:16
我现在已经实现了遍历功能。
但由于目录下的子目录和文件较多,程序工作起来界面长时间不变,像是死机一样。
因此,想在遍历时设置进度条,来显示工作进度,向用户表明程序仍在辛勤工作,没有死机。

我在论坛里查了一下,大致有两种解决方案:
第一、工作线程+非模式对话框;
第二、工作线程+界面线程。

我是新手,只会写简单的数据处理函数,对VC的线程和界面消息等操作不太懂。
在这里求一个例子,只要能在用户点击“遍历目录”菜单项之后,做到如下几点就行:
(1)用户点击“遍历目录”菜单项之后,开始遍历文件的操作;
(2)遍历文件的同时显示进度;
(3)遍历结束的时候,把显示进度的进度条或者含有进度条的窗口关闭。

要求不高,只要能实现上述简单的功能即可。高手们手头肯定有现成的例子,请发给我一份:
cass_2000_dhz@sina.com
发完后请跟贴留言,以便给分。谢谢!
...全文
119 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
woshihuzi 2009-06-06
  • 打赏
  • 举报
回复
自己搞定了,谢谢各位建议。

我把源代码发布成0分资源了,与新手兄弟共享,希望高手指正。资源地址如下:
http://download.csdn.net/source/1387416
trs_guoyunhui 2009-06-02
  • 打赏
  • 举报
回复
方案一:通过滚动条(非进度条)来指示程序实际是在跑着的。
如qimiao77所言,只要单开一个线程让一个.gif的滚动条在界面上一直来回滚动就可以达到这种效果
目录查找完后通知滚动条线程终止即可。
方案二:通过回调函数更新进度处理窗口。
搜索目录过程中可以自己设定在什么时候回调,回调函数里写更新进度或者以搜索到的文件名称列表等信息,
也可以达到搜索目录和进度显示的一致,并且界面没有死掉。
愚见,弄过类似的,不知道可不可以达到楼主要求的效果。
woshihuzi 2009-06-02
  • 打赏
  • 举报
回复

确定多少文件,好办,采用队列法或者递归法,很快能算出来多少个文件。关键是遍历得到的每一个文件还要进一步操作,所以整体上遍历完需要很多时间。

不开线程的话,只能独占CPU,CPU高速运转,界面不可能给更新,动的效果也出不来。所以只能采取让遍历操作开线程的办法。

问题就在于线程不会开,非模式对话框接受消息也不会,所以在这里求一个例子。
贪玩的老鼠 2009-06-02
  • 打赏
  • 举报
回复
这个呢,其实你只要搞一个类似状态条的东西,告诉用户在做什么就可以了,
比如正在查找"d:\123"文件,然后搞点动的效果就可以了.不一定要进度条的.
woshihuzi 2009-06-02
  • 打赏
  • 举报
回复
两种方法我都想试试,就是线程不会写。回头学着写出程序,把关键代码和出现的问题以及想要达到的效果贴出来,再请大家帮忙。
txk1452 2009-06-02
  • 打赏
  • 举报
回复
进度条?你能确定目录下有多少文件吗?

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧