본문 바로가기

Language/MFC

MFC Folder 통체 복사

처음에 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;
}