我调用保存对话框来保存xml文件(例如:a.xml),然后以静默方式将其克隆(例如:a_clone.xml)保存到其他位置。但它只适用于a.xml文件。 这是我保存对话框的代码:
string Savefilename(char *filter = "Mission Files (*.mmf)\0*.mmf", HWND owner = NULL){
OPENFILENAME ofn;
char fileName[MAX_PATH] = "";
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = owner;
ofn.lpstrFilter = filter;
ofn.lpstrFile = fileName;
ofn.nMaxFile = MAX_PATH;
ofn.Flags = OFN_EXPLORER | OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT;
ofn.lpstrDefExt = "";
ofn.lpstrInitialDir ="Missions\\";
string fileNameStr;
if ( GetSaveFileName(&ofn) )
fileNameStr = fileName;
return fileNameStr;
}
任何人都可以帮助我!
答案 0 :(得分:0)
CopyFile
是一个简单的功能,通常可靠。它在这里失败可能是因为目标目录没有退出,或者因为你没有对目标目录的写访问权。与std::ofstream myfile
相同,您可能没有检查错误。
确保目标目录存在。提供目标文件的完整路径名。确保您有权访问目标目录。
注意" c:\ program files"等等是受保护的目录,您需要管理员权限才能复制到这些目录。
您还可以检查错误:
SetLastError(0);
CopyFile(source, destination, FALSE);
DWORD error = GetLastError();
if (error)
{
char buf[255];
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, 0, error, 0, buf, 255, 0);
cout << "error: " << error << ", " << buf << endl;
}