我正在尝试使用SHFileOperation将文件夹中的文件(只有文件,没有递归)复制到子文件夹。我有以下代码失败,SHFileOperation返回1223我得到一个窗口,只有一个取消按钮说:
“目标文件夹是源文件夹的子文件夹。”
bool CopyFolder(std::string source, std::string destination)
{
SHFILEOPSTRUCTA sf;
source.append(1, '\0');
destination.append(1, '\0');
sf.hwnd = GetDesktopWindow(); //Temporary just so I can see any messages
sf.pFrom = source.c_str();
sf.pTo = destination.c_str();
sf.wFunc = FO_COPY;
sf.fFlags = FOF_NORECURSION | FOF_NOCONFIRMATION | FOF_NOCONFIRMMKDIR | FOF_SILENT;
int result = SHFileOperation(&sf);
if (result == 0)
{
return true;
}
std::cout << "Error: " << result << std::endl;
return false;
}
现在,如果我对我设置fFlags的行进行注释,它会成功运行,所有文件/文件夹都会复制到子文件夹中。有没有人知道它是你没有设置时使用的默认标志,或者如何在设置我想要的标志时避免这个错误,即只复制文件?