因为CreateDirectory每次只能创建一层目录,所以需要多重循环进行创建
int CX264DECODE::CreateDirect(CString PathName)
{
BOOL bRet = FALSE;
if (PathFileExists(PathName))
{
return TRUE;
}
else
{
int Pos = PathName.Find(_T("\\"));
CString ParentPath=PathName.Left(Pos+1);
CString SubPath = PathName.Mid(Pos+1);
CString MidDir;
while (Pos!=-1)
{
if (!PathFileExists(ParentPath))
{
bRet = CreateDirectory(ParentPath,NULL);
}
Pos = SubPath.Find(_T("\\"));
MidDir = SubPath.Left(Pos+1);
SubPath = SubPath.Mid(Pos+1);
ParentPath.Format(ParentPath+_T("%s"),MidDir);
}
bRet = CreateDirectory(PathName,NULL);
}
return bRet;
}
还有比较简单一点的递归算法
int Pos = PathName.ReverseFind('\\');
CString ParentPath=PathName.Left(Pos);
if (!PathFileExists(ParentPath))
{
CreateDirect(ParentPath);
}
CreateDirectory(PathName,NULL);
return 1;