青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-59  評論-36  文章-0  trackbacks-0

在做一個東西時需要掃描目錄下所有圖片,于是就產生了如下的東西

給定速要掃描的路徑,則以其為根目錄掃描其下所有目錄和文件,并且還可以設定掃描的深度


P.S.:
1. 掃描是遞歸實現的,所以缺點很明顯。
2. 在掃描過程中會用到用戶指定的回調函數,并且會將文件類型和名字一并傳入,以便用戶自行決定是否需要將其添加到tree控件中。




頭文件

#include <functional>

class CFolderScanner
{
private:
    CTreeCtrl 
*pTreeCtrl;
    CList
<HTREEITEM , HTREEITEM> FolderRootStack;

public:
    CFolderScanner(
void);
    
~CFolderScanner(void);

    
void       SetTree(CTreeCtrl *pTree);
    CTreeCtrl
* GetTreeCtrl();

    
// 在指定的根目錄下掃描文件和文件夾,并將掃描到的名字和類型傳入回調函數中.同時第二個參數指定掃描文件夾的深度.
    
// 回調函數返回值:
    
//   0 : 添加當前項,如果是文件夾則不繼續深入掃描
    
//   1 : 添加當前項,如果是文件夾則繼續深入掃描
    
//  -1 : 不要當前項,如果是文件夾則自然不會深入
    void       ScanFolder(LPCTSTR RootFolder , int Level , std::tr1::function<int (bool , CString& , int)> CallBack_);

    
void       GetFileList(LPCTSTR FolderPath , CArray<CString , CString&> FileArray);
    CString    GetPath(HTREEITEM hItem , LPCTSTR separator 
= NULL);
}
;


實現
#include "StdAfx.h"
#include 
"FolderScanner.h"

CFolderScanner::CFolderScanner(
void)
{
    pTreeCtrl 
= NULL;
}


CFolderScanner::
~CFolderScanner(void)
{
}


void CFolderScanner::SetTree( CTreeCtrl *pTree )
{
    pTreeCtrl 
= pTree;
}


CTreeCtrl
* CFolderScanner::GetTreeCtrl()
{
    
return pTreeCtrl;
}


void CFolderScanner::ScanFolder( LPCTSTR RootFolder , int Level , std::tr1::function<int (bool , CString& , int)> CallBack_ )
{
    ASSERT(pTreeCtrl);

    CFileFind file;
    CString FolderPath(RootFolder);
    
int i = file.FindFile(FolderPath+_T("\\*.*"));

    
if(FolderPath.Right(1!= _T("\\"))
        FolderPath 
+= L"\\";

    
bool isFolder = false;
    CString Name;
    
bool    isLastOne = false;
    HTREEITEM Root_tmp;

    
while (1)
    
{
        
if (!file.FindNextFile())
            isLastOne 
= true;

        
if (file.IsDots())
        
{
            
if (isLastOne)
                
break;
            
else
                
continue;
        }


        
if (file.IsDirectory())
        
{
            isFolder 
= true;
            Name 
= file.GetFileName();
        }

        
else
        
{
            isFolder 
= false;
            Name 
= file.GetFileName();
        }


        
int ReVal = CallBack_(isFolder , Name , Level);

        
if (-1 != ReVal)
        
{
            
if (!FolderRootStack.GetCount())
                Root_tmp 
= NULL;
            
else
                Root_tmp 
= FolderRootStack.GetHead();

            Root_tmp 
= pTreeCtrl->InsertItem(Name , 0 , 0 , Root_tmp);

            
if (1 == ReVal && (1 < Level || -1 == Level))
            
{
                FolderRootStack.AddHead(Root_tmp);

                ScanFolder(FolderPath 
+ Name ,(-1 == Level)? -1 : Level - 1 , CallBack_);    // 深入遍歷子目錄
            }

        }


        
if (isLastOne)
            
break;
    }


    
if (FolderRootStack.GetCount())
        FolderRootStack.RemoveHead();
}


void CFolderScanner::GetFileList( LPCTSTR FolderPath , CArray<CString , CString&> FileArray )
{
    CFileFind fileFind;
    CString   Path(FolderPath);

    
bool OK = fileFind.FindFile(Path+_T("\\*.*"));
    
    
while (OK)
    
{
        
if (!fileFind.FindNextFile())
            OK 
= false;

        
if (!fileFind.IsDots() && !fileFind.IsDirectory())
        
{
            FileArray.Add(fileFind.GetFilePath());
        }

    }

}


CString CFolderScanner::GetPath( HTREEITEM hItem , LPCTSTR separator 
/*= NULL*/ )
{
    CString ReturnVal 
= pTreeCtrl->GetItemText(hItem);

    
while(hItem = pTreeCtrl->GetParentItem(hItem))
    
{
        ReturnVal 
= pTreeCtrl->GetItemText(hItem) + (separator ? separator : _T("\\")) + ReturnVal;
    }


    
return ReturnVal;
}
posted on 2011-01-09 20:44 zhaoyg 閱讀(859) 評論(0)  編輯 收藏 引用 所屬分類: MFC學習筆記
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            最新亚洲视频| 亚洲人体1000| 欧美一区二区国产| 国产精品久久久久久超碰| 欧美一区二区三区在线观看视频| 韩国一区二区三区美女美女秀| 亚洲一区二区三区免费视频| 亚洲精品欧美日韩| 欧美日韩一区二区免费在线观看 | 久久免费高清视频| 在线看片一区| 亚洲人成艺术| 国产精品黄色在线观看| 欧美中文字幕不卡| 久久久之久亚州精品露出| 91久久精品一区| 一区二区三区欧美| 国产日韩一区二区| 欧美激情视频网站| 欧美午夜理伦三级在线观看| 欧美在线你懂的| 免费在线播放第一区高清av| 国产精品99久久久久久宅男| 欧美亚洲一区二区三区| 亚洲三级电影在线观看| 亚洲永久免费观看| 亚洲欧洲一区| 亚洲欧美韩国| 99精品国产在热久久婷婷| 洋洋av久久久久久久一区| 黄色成人免费观看| 夜夜嗨网站十八久久| 樱桃成人精品视频在线播放| 99天天综合性| 亚洲国内欧美| 亚洲欧美中文日韩在线| a4yy欧美一区二区三区| 久久成人精品一区二区三区| 一本一道久久综合狠狠老精东影业 | 久久精品国产欧美亚洲人人爽| 久久婷婷综合激情| 西西裸体人体做爰大胆久久久| 久久综合给合久久狠狠狠97色69| 亚洲综合欧美| 欧美精品一区二区三区久久久竹菊| 欧美中文字幕不卡| 国产精品超碰97尤物18| 亚洲电影欧美电影有声小说| 国产综合18久久久久久| 亚洲无人区一区| 这里只有精品在线播放| 欧美 日韩 国产精品免费观看| 欧美怡红院视频| 欧美午夜视频网站| 亚洲精品久久视频| 亚洲精品一二三| 久热精品视频在线观看一区| 久久精品国产77777蜜臀| 国产精品黄视频| 一二美女精品欧洲| 亚洲神马久久| 欧美日韩亚洲在线| 最新成人av在线| 亚洲美女毛片| 欧美精品一区二区在线播放| 欧美激情一区二区三区在线视频观看 | 欧美一区二区三区四区夜夜大片| 在线亚洲欧美| 欧美日韩成人综合天天影院| 亚洲日本成人网| 一区二区三区免费在线观看| 欧美日韩国产色站一区二区三区| 亚洲国产精品999| 亚洲精品日韩久久| 欧美激情中文字幕在线| 亚洲精品久久久蜜桃 | 国产精品久久久一区麻豆最新章节| 亚洲日本成人女熟在线观看| 日韩视频第一页| 欧美日韩在线一区二区三区| 中国女人久久久| 久久精品91久久久久久再现| 国内精品久久久久影院 日本资源 国内精品久久久久伊人av | 亚洲激情国产精品| 欧美激情第五页| 一区二区三区高清视频在线观看| 亚洲一区二区在线播放| 国产麻豆精品视频| 久久久免费av| 亚洲精品国产日韩| 午夜精品久久久久久久白皮肤 | 久久综合五月| 亚洲人成绝费网站色www| 亚洲一区二区免费在线| 国产精品一区二区三区观看| 久久九九热免费视频| 欧美黑人多人双交| 亚洲欧美一区二区三区久久| 国产一区二区无遮挡| 免费成人激情视频| 亚洲午夜一区二区| 欧美成人高清视频| 亚洲一区中文| 亚洲第一精品福利| 国产精品久久久久久久久果冻传媒| 欧美一区三区二区在线观看| 亚洲国产精品123| 午夜视频一区在线观看| 亚洲黄色在线视频| 国产精品一区二区久激情瑜伽| 麻豆av一区二区三区| 亚洲午夜在线观看视频在线| 欧美jjzz| 久久久国产精品一区| 日韩午夜在线电影| 国产有码一区二区| 欧美日韩国产成人在线91| 欧美中文字幕在线观看| av成人激情| 欧美激情视频一区二区三区在线播放 | 国产精品va在线| 男女精品视频| 久久久久久日产精品| 亚洲一区制服诱惑| 日韩视频永久免费| 亚洲国产精品尤物yw在线观看| 久久精品国产欧美亚洲人人爽 | 国产日韩一区二区三区| 欧美日韩亚洲三区| 欧美成人黄色小视频| 久久www免费人成看片高清| 亚洲深夜福利网站| 99精品视频免费全部在线| 欧美黄色网络| 欧美高清在线视频| 美女免费视频一区| 久久这里只精品最新地址| 欧美一区二区视频观看视频| 亚洲伊人一本大道中文字幕| 亚洲精品在线视频| 亚洲精品视频免费在线观看| 91久久精品美女高潮| 亚洲电影中文字幕| 亚洲电影激情视频网站| 一区在线免费| 亚洲大胆av| 亚洲激情在线视频| 亚洲国产精品一区二区第四页av| 国内精品久久久久久 | 亚洲第一精品电影| 亚洲高清一区二| 亚洲国产日韩欧美在线99| 亚洲高清在线观看一区| 在线视频成人| 亚洲区一区二区三区| 亚洲看片网站| 一区二区欧美精品| 亚洲在线视频网站| 欧美一区二区三区成人| 久久免费高清| 欧美成人激情在线| 亚洲国产精品久久久久秋霞蜜臀| 亚洲激情av在线| 亚洲另类视频| 亚洲一区二区三区视频播放| 亚洲欧美一级二级三级| 久久精品中文字幕一区| 久久亚洲一区| 欧美日韩和欧美的一区二区| 国产精品久久波多野结衣| 国产三级欧美三级| 亚洲电影在线播放| 中文av一区二区| 久久精品国产亚洲a| 欧美大片免费观看在线观看网站推荐| 亚洲高清资源| 亚洲欧美日韩一区二区| 久久久在线视频| 欧美三日本三级三级在线播放| 国产精品自拍在线| 亚洲人成在线观看| 欧美一级视频| 欧美激情亚洲另类| 亚洲伊人久久综合| 欧美成人视屏| 国产亚洲精品aa| 99re国产精品| 久久米奇亚洲| 亚洲一级网站| 欧美a级一区| 国产亚洲高清视频| 亚洲视频福利| 欧美ed2k| 欧美在线影院| 国产精品久久国产三级国电话系列| 激情六月婷婷综合| 亚洲欧美综合| 亚洲伦伦在线| 免费亚洲电影在线观看| 国产日韩亚洲|