我写了一个对话框的文件搜索程序。每次打开程序时,都要遍历一下磁盘,大概要7秒钟的时间。我把遍历的代码放在初始化窗口的函数中。意思是每次打开程序都要等7秒才能看到界面 这太慢了吧。没人愿意用这样的软件吧。所以我想把遍历的任务放到用户看到对话框并在对话框的编辑框中输入文字的时候遍历磁盘。该怎么做呢?遍历的代码该个、放在那里呢?还有遍历的时候会不会不响应用户的输入请求啊!会不会遍历的时候用户无法输入啊?

解决方案 »

  1.   

    post一个消息出来就可以了,在消息里面处理。或者启动一个线程
      

  2.   

    在WM_CREATE消息的函数里AfxBeginThread开个新线程就行了
      

  3.   

    滥用线程,带来的麻烦远大于好处.你的程序在遍历磁盘之前,接受用户输入有意义吗?
    如果有意义,那么遍历磁盘的操作就不应该放到create消息里.
    如果无意义,那就不应该允许用户输入.
    怎么看都用不到线程.
    可以显示一个沙漏,让用户知道程序忙着呢.
      

  4.   


    开线程访问不了类里定义的成员std::list <CString>mylist;怎么办?