처음에 Folder를 복사 하기 위해서 모든 폴더 내부에 있는 폴더와 파일을 스캔한 후 Path를 받아오는 방식으로 했었는데 ....
함께 일하시는 수석연구원님 께서 한방에 해결하는 방법을 찾아 주셨네요 ;;;( 거의다 구현 했었는데....OTL)
SHFILEOPSTRUCT 구조체를 이용하여 매우 간단하게 폴더를 복사 하는 방법입니다.
동작 옵션을 달리하면 여러 기능이 가능합니다...
intCopyFolder(CString szFrom, CString szTo)
{
SHFILEOPSTRUCT shfo;
int nRet;
char* pszFrom = new char[szFrom.GetLength()+1];
char* pszTo = new char[szTo.GetLength()+1];
// EmptyDirectory(szTo);
// CreateDirectory(szTo, NULL);
// SetFileAttributes(szTo, FILE_ATTRIBUTE_ARCHIVE);
// RemoveDirectory(szTo);
strcpy(pszFrom, szFrom);
strcpy(pszTo, szTo);
ZeroMemory(&shfo, sizeof(SHFILEOPSTRUCT));
shfo.hwnd = AfxGetMainWnd()->m_hWnd;
shfo.wFunc = FO_COPY;
shfo.pFrom = pszFrom;
shfo.pTo = pszTo;
shfo.fFlags = FOF_NOCONFIRMATION | FOF_NOERRORUI | FOF_SILENT | FOF_NOCONFIRMMKDIR;
shfo.lpszProgressTitle = NULL;
nRet = SHFileOperation(&shfo);
delete[] pszFrom;
delete[] pszTo;
return nRet;
}