untitled-11.txt

来自「mfc 教程」· 文本 代码 · 共 37 行

TXT
37
字号
      if(hF。nd!= INVALID_HANDLE_VALUE) 
              do 
                  if( fd.dwFileAttributes& FILE_ATTRIBUTE.DIRECTORY)
                      TRACE(_T(”% s\n”),  fd.oF。leNa。e);
             while(::F土ndNextFile(hFind,&fd));
            :: FindClose(hFIFd);
      2
    更有趣的问题是:如何把给定目录“和它的子目录”下的所有目录枚举出来。下面的函
数枚举出当前目录和其子目录中的所有目录,并把每个目录的名称写到调试输出窗口。秘
诀是什么?一旦遇到目录,EnumeraeFolders便进入该目录并递归调用自身。
      vo。d EnumerateFolders()
            WIN32FIND_DATA fd;
          HANDLE hFind=:: FindFirstFile(T(”。。”),&fd);
        if(hFind!= INVALID_HANDLE.VALUE) {
                d。{
                    if(fd.dwFileAttributes& FILE.ATTRIBUTE.DIRECTORY) j
                            CStr立ng  name=    fd. oF主 leNarne;
                        IT(na。e!=_T(”.1&& na。e!=_T(”..1) 5
                                TRACE(T(”%s\n”),  fd.cFcleName);
                              :: SetCurrentDirectory( fd.cFileName) ;
                              Enu。erateFolders();
                              ··SetCurrento。rectory(r(”..”》;
                          S
                }  while(:: FindNextFile(hFind,&fd));
                :: FindClose(hFind);
          S
      I
如果要使用该函数,先导航到枚举起始时所在的目录,然后调用EnumeraeF0lders。下面的语
句枚举了驱动器C中的所有目录:
      ::SetCurrentDlrectorr(_T(”C:\\”));
      EnumerateFolders();
    在第10章我们将用类似的技巧给村图填充,图中各项代表某驱动器上的所有文件夹。
6.2用行化和 CArchive gr
    尽管MFC的CFile类极大地简化了文件数据的读写,但是大部分MFC应用程序并不直

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?