/*-------------------------------------------------------------------------------/
  関数名: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;
}
       |