我想通过在win32中打开文件对话框来获取完整的文件路径。 我这样做是通过这个功能:OPENFILENAME打开对话框
string openfilename(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_FILEMUSTEXIST | OFN_HIDEREADONLY;
ofn.lpstrDefExt = "";
ofn.lpstrInitialDir ="Missions\\";
string fileNameStr;
if (GetOpenFileName(&ofn))
fileNameStr = fileName;
return fileNameStr;
}
它的工作正常和返回路径。但我不能写入该文件,我得到了与openfilename的路径。
注: 我把这个代码写入到文件(系列化):
string Mission_Name =openfilename();
ofstream ofs ;
ofs = ofstream ((char*)Mission_Name.c_str(), ios::binary );
ofs.write((char *)&Current_Doc, sizeof(Current_Doc));
ofs.close();
做你检查'fileNameStr'的价值? – Zigma
'LPCSTR'演员给我带来了一些毛骨悚然......什么是MyfilePath的声明? –
我认为(不确定)这将是你的字符串转换中的'\ 0'的问题。 – Zigma