/*-------------------------------------------------------------------------------/
関数名:BOOL MakeDirectory(LPCTSTR lpPathName)
引 数:lpPathName 作成するディレクトリのパス名が入ったNULLで終わる文字列。
戻り値:関数が成功すると、0以外の値が返り、関数が失敗すると、0が返ります。
解 説:多階層のディレクトリを一度に作成。
/-------------------------------------------------------------------------------*/
BOOL MakeDirectory(LPCTSTR lpPathName)
{
int nStart = 0;
BOOL res = FALSE;
CString strMakePath;
CString strPathName = lpPathName;
strPathName.TrimRight('\\');
strPathName += _T("\\");
// ディレクトリを1つずつ繰り返し作成
while(strMakePath + _T("\\") != strPathName)
{
// 作成するディレクトリ名を設定
nStart = strPathName.Find('\\', nStart + 1);
strMakePath = strPathName.Left(nStart);
// ディレクトリが存在するかチェックし無ければ作成
CFileStatus rStatus;
if(!(CFile::GetStatus(strMakePath, rStatus) ||
(strMakePath.GetLength() == 2 && strMakePath.GetAt(1) == ':')))
res = ::CreateDirectory(strMakePath, NULL);
}
return res;
}
|