C++でのフォルダ丸ごとコピーの方法。
私は以下のような関数を作って、fromに元のパス名、toにコピー先のパス名を入力するようにしています。
WindowsAPIを使っているので、CString部分をTCHARとかで書き換えればVC以外でも動くはず。
ソース。
int folderCopy( CString from, CString to )
{
SHFILEOPSTRUCT tSHFile;
tSHFile.hwnd = ::GetDesktopWindow();
tSHFile.wFunc = FO_COPY;
tSHFile.fFlags = FOF_SILENT | FOF_NOCONFIRMMKDIR | FOF_NOERRORUI;
tSHFile.fAnyOperationsAborted = TRUE;
tSHFile.hNameMappings = NULL;
tSHFile.lpszProgressTitle = "";
// パス名のCStringの末尾に\0をつけて設定
from += "0";
to += "0";
from.SetAt( from.GetLength()-1, NULL );
to.SetAt( to.GetLength()-1, NULL );
tSHFile.pFrom = from;
tSHFile.pTo = to;
return SHFileOperation( &tSHFile ); // 実行
}
こんな感じで。