예전에 폴더간의 복사를 하기 위한 모듈을 만들었었는데, CFileFind를 써서 리커젼으로 돌렸었다.
엄청난 수고를 했었는데 SHFileOperation를 이용해서 간단히 폴더간 복사를 수행할 수 잇는 방법을 찾았다.
int CopyFolder(CString szFrom, CString szTo)
{
SHFILEOPSTRUCT shfo;
int nRet;
char* pszFrom = new char[szFrom.GetLength()+1];
char* pszTo = new char[szTo.GetLength()+1];
EmptyDirectory(szTo);
SetFileAttributes(szTo, FILE_ATTRIBUTE_ARCHIVE);
RemoveDirectory(szTo);
strcpy(pszFrom, szFrom);
strcpy(pszTo, szTo);
shfo.hwnd = NULL;
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;
}
삽질을 하지말자 ㅡㅡ^
엄청난 수고를 했었는데 SHFileOperation를 이용해서 간단히 폴더간 복사를 수행할 수 잇는 방법을 찾았다.
int CopyFolder(CString szFrom, CString szTo)
{
SHFILEOPSTRUCT shfo;
int nRet;
char* pszFrom = new char[szFrom.GetLength()+1];
char* pszTo = new char[szTo.GetLength()+1];
EmptyDirectory(szTo);
SetFileAttributes(szTo, FILE_ATTRIBUTE_ARCHIVE);
RemoveDirectory(szTo);
strcpy(pszFrom, szFrom);
strcpy(pszTo, szTo);
shfo.hwnd = NULL;
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;
}
삽질을 하지말자 ㅡㅡ^
최근 댓글