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

隨筆-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>
            亚洲精品极品| 久久av在线看| 亚洲精品一二| 欧美日韩在线免费| 一区二区国产日产| 在线中文字幕日韩| 国产啪精品视频| 久久蜜桃精品| 欧美国产日本高清在线| 亚洲免费观看高清完整版在线观看熊| 亚洲黄色小视频| 欧美日韩视频一区二区三区| 亚洲欧美日韩在线一区| 久久国产精品久久精品国产| 亚洲高清激情| 在线性视频日韩欧美| 国产主播一区二区三区四区| 欧美福利影院| 欧美午夜久久久| 久久精品国产第一区二区三区| 老色批av在线精品| 亚洲视频精选| 久久久久久久网| 亚洲视频在线观看三级| 欧美一区二区高清在线观看| 亚洲国产影院| 午夜精品久久| 99热精品在线观看| 久久本道综合色狠狠五月| 99视频日韩| 欧美在线一区二区三区| 一区二区三区偷拍| 久久嫩草精品久久久精品一| 亚洲自拍三区| 欧美大片免费看| 久久久久久久网站| 国产精品r级在线| 亚洲电影专区| 好吊色欧美一区二区三区四区| 99re66热这里只有精品4| 激情综合五月天| 亚洲欧美日韩国产精品| 99视频在线精品国自产拍免费观看 | 韩日精品视频一区| 亚洲免费电影在线| 有码中文亚洲精品| 亚洲欧美日韩爽爽影院| 一区二区三区欧美激情| 欧美成ee人免费视频| 老司机一区二区| 国产日韩视频| 亚洲女性喷水在线观看一区| 一区二区三区久久| 欧美激情1区2区| 欧美国产日韩一区二区| 激情综合激情| 久久视频一区二区| 久久精品五月| 国产一区久久| 久久狠狠婷婷| 久久综合一区| 狠狠色狠狠色综合系列| 香蕉成人久久| 久久噜噜噜精品国产亚洲综合| 国产九九精品视频| 亚洲欧美日韩在线一区| 欧美一区二区久久久| 国产欧美一二三区| 午夜精品成人在线视频| 欧美在线视频免费观看| 国产一区二区三区久久| 久久国产精品网站| 男女精品视频| 亚洲人体影院| 欧美日韩精品免费观看视频| 亚洲精品在线一区二区| 亚洲影院色在线观看免费| 国产精品成人免费| 亚洲欧美日韩直播| 久久青青草综合| 亚洲黄网站黄| 欧美精品一区二区蜜臀亚洲| 最新亚洲一区| 亚洲女人天堂成人av在线| 国产精品网站一区| 久久久久久久久久久成人| 欧美mv日韩mv国产网站app| 亚洲精品久久久久久一区二区 | 91久久综合亚洲鲁鲁五月天| 日韩视频在线一区| 国产精品国产精品国产专区不蜜| 亚洲一级黄色片| 久久综合国产精品| 一本久道久久综合婷婷鲸鱼| 国产精品亚洲综合久久| 久久午夜视频| 一区二区三区视频在线| 久久夜色精品亚洲噜噜国产mv| 亚洲电影自拍| 国产精品美女视频网站| 久久一区二区三区超碰国产精品| 亚洲精品久久久一区二区三区| 羞羞漫画18久久大片| 亚洲成人自拍视频| 国产精品久久999| 久久久一区二区| 亚洲五月婷婷| 亚洲国产精品尤物yw在线观看| 亚洲女性裸体视频| 亚洲欧洲美洲综合色网| 国产模特精品视频久久久久| 欧美激情综合五月色丁香小说| 午夜精品一区二区三区四区| 亚洲破处大片| 欧美高清在线一区二区| 欧美综合激情网| 亚洲午夜一区二区三区| 亚洲国产经典视频| 国产日韩1区| 欧美视频官网| 欧美日韩精品一区视频| 久久久久久久一区二区| 亚洲自拍啪啪| 日韩视频在线观看免费| 亚洲高清毛片| 欧美成人免费全部| 久久精品国产欧美亚洲人人爽| 中文精品视频| 日韩午夜激情电影| 亚洲高清不卡在线| 影音先锋久久资源网| 国产又爽又黄的激情精品视频| 国产精品卡一卡二卡三| 欧美日韩精品在线观看| 欧美激情一区二区三区在线| 免费h精品视频在线播放| 久久精品国产综合| 久久国内精品视频| 欧美一区二区三区男人的天堂 | 在线亚洲自拍| 一区二区日本视频| 亚洲久久一区| 日韩系列欧美系列| 99热这里只有成人精品国产| 日韩网站在线观看| 亚洲精品永久免费| 日韩视频在线播放| 一本色道久久综合亚洲精品不卡| 夜夜嗨网站十八久久| 一本色道久久99精品综合| 一本在线高清不卡dvd| 一本色道精品久久一区二区三区 | 老司机午夜精品视频在线观看| 久久久久综合| 免费看亚洲片| 亚洲欧洲精品成人久久奇米网| 亚洲欧洲另类国产综合| 999在线观看精品免费不卡网站| 在线亚洲一区二区| 亚洲女同在线| 久久精品国产一区二区三区| 免费日韩av片| 欧美日韩一区在线观看| 国产精品色网| 在线观看成人一级片| 亚洲激情视频在线播放| 在线一区日本视频| 久久精品男女| 欧美国产综合一区二区| 99re8这里有精品热视频免费| 亚洲午夜精品一区二区| 久久久99免费视频| 欧美日韩亚洲网| 国产一区二区三区自拍| 亚洲精品美女久久久久| 午夜精品成人在线视频| 欧美α欧美αv大片| 一区二区久久久久| 久久精品在线播放| 欧美日韩在线视频一区| 狠狠入ady亚洲精品| 一区二区三区欧美视频| 久久婷婷色综合| 一区二区三区久久网| 久久久水蜜桃| 国产精品国产三级欧美二区| 亚洲福利免费| 久久大综合网| 日韩视频在线播放| 久久久亚洲一区| 国产乱码精品一区二区三区不卡| 亚洲国产精品ⅴa在线观看 | 亚洲日本一区二区| 羞羞色国产精品| 亚洲精品一区二区三区四区高清| 久久不见久久见免费视频1| 欧美性猛交xxxx乱大交退制版| 伊人久久婷婷| 久久av一区| 在线中文字幕一区|