CreateDirectory() 는 마지막 폴더만 생성하는 함수입니다.

다음은 원하는 Full Path 의 폴더를 생성시켜주는 함수입니다.

BOOL AutoCreateDirectory(TCHAR* dir)
{
 TCHAR path[MAX_PATH] = {0, };
 TCHAR *p = dir;
 int nStep = 0;
 BOOL bRet = FALSE;

 //   0    1    2    3
 // c:\test\1234\5678\23412
 while( true )
 {
  if (*p == '\\' || *p == NULL)
  {
   if (nStep >= 1)
   {
    _tcsncpy(path, dir, (p-dir));
    path[(p-dir)] = '\0';

    bRet = CreateDirectory(path, NULL);

    if (bRet == NULL && GetLastError() != ERROR_ALREADY_EXISTS)
    {
     TRACE("심각한 오류 : 폴더 생성 실패. 원인 %ld \n", GetLastError());
     return FALSE;
    }
   }

   if (*p == NULL)
    break;

   nStep++;
  }

  p++;
 }

 return TRUE;
}

휴~ 이넘의 지저분한 소스... 매번 느끼는거지만 초간단 플밍만 하니 소스가 이모양이지....

+ Recent posts