友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
狗狗书籍 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

VC语言6.0程序设计从入门到精通-第79章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!






     //DeleteTree 函数用于删除目录,并同时删除目录中的所有子目录和文件  



     //参数 strDir 用于确定要删除的目录名  



     void CMyFile::DeleteTree(CString strDir)  



     {  



         CFileFind finder;   //创建一个目录搜索类  



         CString delFile=strDir;  



         delFile+=〃*。*〃;   //设置搜索目录的通配符  



         //开始搜索,bWorking 用于表示是否搜索到新文件  



         BOOL bWorking = finder。FindFile(delFile);  



         //如果 bWorking 为 TRUE 则继续循环  



             while (bWorking)  



             {  



              //获取下一个文件  



                bWorking = finder。FindNextFile();  



              //获取找到的文件名  



               CString filename=finder。GetFilePath();  



              //如果文件是一个目录,而且不是一个“。”或者“。。”的目录  



              //那么删除这个子目录  



 ·202 ·  


…………………………………………………………Page 214……………………………………………………………

                                                                                          第 8 章    文件操作  



                if(finder。IsDirectory()&&(!finder。IsDots()))  



                {  



                      //递归调用自身删除子目录  



                      Delete(filename);  



                }  



                else if (!finder。IsDots())  //如果文件不是一个“。”或者“。。”的文件则删除该文件  



                {  



                      CFile::Remove(filename);    //删除文件  



                }  



             }  



           //文件查找完毕,所有文件都已经删除,目录清空  



           RemoveDirectory(strDir);    //删除空目录  



      }  



8。3    文件对话框  



      第 4 章已经介绍过文件对话框的基本使用方法。现在介绍一些关于 CFileDialog 的高级使 

用方法,包括多选文件对话框的使用方法和重载文件对话框的方法,使得程序能更灵活地控 

制文件对话框。  



8。3。1    多选文件对话框  



      当构造 CFileDialog 类时指定了 OFN_ALLOWMULTISELECT 的属性,则 CFileDialog 允 

许用户选择多个文件,如图 8…3 所示。  

      当设置允许多选的文件对话框时,与普通使用惟一的区别就是如何获得所有选定的文 

件。这就用到 CFileDialog::GetStartPosition()和 CFileDialog::GetNextPathName()两个函数。  



                                                                                  



                                     图 8…3    可以多选的打开文件对话框  



      CFileDialog::GetStartPosition()函数用于获得选择列表中的第一个文件路径名的位置,其 

原型为:  



     POSITION GetStartPosition( ) const;  



                                                                                                      ·203 ·  


…………………………………………………………Page 215……………………………………………………………

Visual C++ 6。0 程序设计从入门到精通  



     函数返回值用于枚举选择的文件。若为 NULL ,则说明选择列表为空。  

     CFileDialog::GetNextPathName()函数用于获得下一个选择的文件名,其原型为:  



     CString GetNextPathName(  



           POSITION& pos    



     ) const;  



     o  参数 pos :指示前一个 GetNexPathName()或 GetStartPosition()函数设置的 POSITION 值。 

        当 GetNextPathName()调用返回时会修改该参数,如果值为 NULL ,则说明到达列表结 

        尾。  

     o  函数返回值:获得下一个选择的文件路径名。  

     于是可以得到下面的代码:  



     //创建一个可以多选的文件对话框  



     CFileDialog dlg(TRUE; NULL;NULL;OFN_ALLOWMULTISELECT);  



     if (dlg。DoModal()==IDOK)            //如果返回为确定,获得选择的文件名  



     {  



          POSITION pos;  



          pos=  dlg。GetStartPosition(); //开始遍历用户选择列表  



          while (pos!=NULL)         //如果列表中还有新的文件  



          {  



               CString filename=GetNextPathName(pos);   //获得新的被选定的文件  



       



               ……        //对 filename 的文件进行处理  



          }  



     }  



8。3。2    重载文件对话框  



     当用户需要文件对话框有更多的功能,则可以通过重载 CFileDialog 类,并为文件对话框 

添加新的控件完成。  

     本节中以一个重载文件对话框的例子介绍重载的步骤 。该例为文件对话框添加一个“删 

除”按钮,用于删除文件对话框中选定的文件,如图 8…4 所示。  

     实现这个自定义的文件对话框主要分为下列 3 个步骤:  



                                                                        



                                       图 8…4    “打开”对话框  



 ·204 ·  


…………………………………………………………Page 216……………………………………………………………

                                                                        第 8 章    文件操作  



     1.创建一个对话框模板  



    首先向工程的资源文件中创建一个新的对话框模板,将 ID 设为 IDD_MYFILEDIALOG 。 

然后设置模板风格属性如图 8…5 所示。  



                                                                      



                             图 8…5    设置对话框模板的风格属性  



    然后向模板中添加“删除”按钮,ID  设置为 IDC_DEL ,并重新调整对话框的大小,如 

图 8…6 所示。  



                                                                          



                               图 8…6    为对话框模板添加控件  



    注意,在图 8…6  中可以看到,新添加包含“删除”按钮的对话框模板是放在文件对话框 

的底部。因此需要将对话框的模板设置为子窗口而且无边框,更重要的是要复选“Clip  

siblings ”和“Clip children ”两个属性,使得文件对话框的原始控件可以得到恰当的重绘。  



    2 .重载 CFileDialog 类  



    在 ClassWizard 中创建一个CFileDialog 的派生类CMyFileDialog 。然后修改CMyFileDialog 

的构造函数,代码如下:  



    //构造函数创建一个新的打开文件对话框,没有后缀名过滤器和默认的后缀名  



    //参数中设置 OFN_ENABLETEMPLATE 用于从自定义模板中添加新的控件  



    CMyFileDialog::CMyFileDialog() :  



             CFileDialog(TRUE; NULL; NULL;    



                      OFN_FILEMUSTEXIST|OFN_ENABLETEMPLATE; NULL; NULL)  



     {  



         //设置文件对话框的模板为 IDD_MYFILEDIALOG  



         //这里有两个参数分别对应于老版本和新版本的文件对话框  



         //这里将两类
返回目录 上一页 下一页 回到顶部 0 0
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!