指定したフォルダに、指定した形式のファイルを取得する
void xxxxxx::GetFileList(LPCTSTR lpFolder, BOOL bSubFolder, LPCTSTR ExtName ,CStringArray& csFileArray )
{
// 変数宣言
CString csSearchFile;
CFileFind FileFind;
BOOL bFindNext;
csSearchFile.Format( _T("%s%s%s") , lpFolder , _T("\\*"), ExtName );
if(!FileFind.FindFile(csSearchFile))
return;
bFindNext = TRUE;
while( bFindNext ){
bFindNext = FileFind.FindNextFile();
// ".",".."でない場合に処理を行う
if(!FileFind.IsDots()){
//ディレクトリで、更にサブディレクトリを処理するのであれば自分を呼ぶ
if(FileFind.IsDirectory() && bSubFolder != FALSE ){
this->GetFileList(FileFind.GetFilePath() , bSubFolder , csFileArray );
}
//ファイルであれば、ファイル名配列に追加していく。
else{
csFileArray.Add( FileFind.GetFilePath() );
}
}
}
// 開放
FileFind.Close();
}
void xxxxxx::GetFileList(LPCTSTR lpFolder, BOOL bSubFolder, LPCTSTR ExtName ,CStringArray& csFileArray )
{
// 変数宣言
CString csSearchFile;
CFileFind FileFind;
BOOL bFindNext;
csSearchFile.Format( _T("%s%s%s") , lpFolder , _T("\\*"), ExtName );
if(!FileFind.FindFile(csSearchFile))
return;
bFindNext = TRUE;
while( bFindNext ){
bFindNext = FileFind.FindNextFile();
// ".",".."でない場合に処理を行う
if(!FileFind.IsDots()){
//ディレクトリで、更にサブディレクトリを処理するのであれば自分を呼ぶ
if(FileFind.IsDirectory() && bSubFolder != FALSE ){
this->GetFileList(FileFind.GetFilePath() , bSubFolder , csFileArray );
}
//ファイルであれば、ファイル名配列に追加していく。
else{
csFileArray.Add( FileFind.GetFilePath() );
}
}
}
// 開放
FileFind.Close();
}
PR
指定したフォルダにあるファイルを取得する
void xxxxxx::GetFileList(LPCTSTR lpFolder, BOOL bSubFolder, CStringArray& csFileArray )
{
// クラス宣言
CUtils mc_utils;
// 変数宣言
CString csSearchFile;
CFileFind FileFind;
BOOL bFindNext;
// 検索キーワード作成
csSearchFile.Format( _T("%s%s") , lpFolder , _T("\\*.*") );
if(!FileFind.FindFile(csSearchFile))
return;
bFindNext = TRUE;
while( bFindNext ){
bFindNext = FileFind.FindNextFile();
// ".",".."でない場合に処理を行う
if(!FileFind.IsDots()){
//ディレクトリで、更にサブディレクトリを処理するのであれば自分を呼ぶ
if(FileFind.IsDirectory() && bSubFolder != FALSE ){
this->GetFileList(FileFind.GetFilePath() , bSubFolder , csFileArray );
}
//ファイルであれば、ファイル名配列に追加していく。
else{
csFileArray.Add( FileFind.GetFilePath() );
}
}
}
// 開放
FileFind.Close();
}
void xxxxxx::GetFileList(LPCTSTR lpFolder, BOOL bSubFolder, CStringArray& csFileArray )
{
// クラス宣言
CUtils mc_utils;
// 変数宣言
CString csSearchFile;
CFileFind FileFind;
BOOL bFindNext;
// 検索キーワード作成
csSearchFile.Format( _T("%s%s") , lpFolder , _T("\\*.*") );
if(!FileFind.FindFile(csSearchFile))
return;
bFindNext = TRUE;
while( bFindNext ){
bFindNext = FileFind.FindNextFile();
// ".",".."でない場合に処理を行う
if(!FileFind.IsDots()){
//ディレクトリで、更にサブディレクトリを処理するのであれば自分を呼ぶ
if(FileFind.IsDirectory() && bSubFolder != FALSE ){
this->GetFileList(FileFind.GetFilePath() , bSubFolder , csFileArray );
}
//ファイルであれば、ファイル名配列に追加していく。
else{
csFileArray.Add( FileFind.GetFilePath() );
}
}
}
// 開放
FileFind.Close();
}
選択したフォルダパスを取得する。
// 特定のフォルダを選択するコールバック
int __stdcall BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
{
if( uMsg == BFFM_INITIALIZED ){
SendMessage( hwnd, BFFM_SETSELECTION, TRUE, lpData );
}
return 0;
}
void xxxxxx::GetSelectFolderPath(CString& SelectFolderPath)
{
BROWSEINFO bInfo;
LPITEMIDLIST pIDList;
TCHAR szDisplayName[MAX_PATH];
// BROWSEINFO構造体に値を設定
// ダイアログの親ウインドウのハンドル
bInfo.hwndOwner = AfxGetMainWnd()->m_hWnd;
// ルートフォルダを示すITEMIDLISTのポインタ (NULLの場合デスクトップフォルダが使われます)
bInfo.pidlRoot = NULL;
// 選択されたフォルダ名を受け取るバッファのポインタ
bInfo.pszDisplayName = szDisplayName;
// ツリービューの上部に表示される文字列
bInfo.lpszTitle = _T("フォルダの選択");
// 表示されるフォルダの種類を示すフラグ
bInfo.ulFlags = BIF_RETURNONLYFSDIRS;
// BrowseCallbackProc関数のポインタ
// デフォルトのフォルダパスを指定する場合、BrowseCallbackProc
bInfo.lpfn = NULL;
// コールバック関数に渡す値
// LPCTSTR文字列で、「デフォルトのフォルダパスを指定」
bInfo.lParam = (LPARAM)0;
// フォルダ選択ダイアログを表示
pIDList = ::SHBrowseForFolder(&bInfo);
if(pIDList == NULL){
// 戻り値がNULLの場合、フォルダが選択されずにダイアログが閉じられたことを意味します。
SelectFolderPath = "";
}else{
// ItemIDListをパス名に変換します
if(!::SHGetPathFromIDList(pIDList, szDisplayName)){
// エラー処理
}
// szDisplayNameに選択されたフォルダのパスが入っています
// 最後にpIDListのポイントしているメモリを開放します
SelectFolderPath = szDisplayName;
::CoTaskMemFree( pIDList );
}
}
// 特定のフォルダを選択するコールバック
int __stdcall BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
{
if( uMsg == BFFM_INITIALIZED ){
SendMessage( hwnd, BFFM_SETSELECTION, TRUE, lpData );
}
return 0;
}
void xxxxxx::GetSelectFolderPath(CString& SelectFolderPath)
{
BROWSEINFO bInfo;
LPITEMIDLIST pIDList;
TCHAR szDisplayName[MAX_PATH];
// BROWSEINFO構造体に値を設定
// ダイアログの親ウインドウのハンドル
bInfo.hwndOwner = AfxGetMainWnd()->m_hWnd;
// ルートフォルダを示すITEMIDLISTのポインタ (NULLの場合デスクトップフォルダが使われます)
bInfo.pidlRoot = NULL;
// 選択されたフォルダ名を受け取るバッファのポインタ
bInfo.pszDisplayName = szDisplayName;
// ツリービューの上部に表示される文字列
bInfo.lpszTitle = _T("フォルダの選択");
// 表示されるフォルダの種類を示すフラグ
bInfo.ulFlags = BIF_RETURNONLYFSDIRS;
// BrowseCallbackProc関数のポインタ
// デフォルトのフォルダパスを指定する場合、BrowseCallbackProc
bInfo.lpfn = NULL;
// コールバック関数に渡す値
// LPCTSTR文字列で、「デフォルトのフォルダパスを指定」
bInfo.lParam = (LPARAM)0;
// フォルダ選択ダイアログを表示
pIDList = ::SHBrowseForFolder(&bInfo);
if(pIDList == NULL){
// 戻り値がNULLの場合、フォルダが選択されずにダイアログが閉じられたことを意味します。
SelectFolderPath = "";
}else{
// ItemIDListをパス名に変換します
if(!::SHGetPathFromIDList(pIDList, szDisplayName)){
// エラー処理
}
// szDisplayNameに選択されたフォルダのパスが入っています
// 最後にpIDListのポイントしているメモリを開放します
SelectFolderPath = szDisplayName;
::CoTaskMemFree( pIDList );
}
}