我想通過在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