【发布时间】:2013-06-05 07:54:37
【问题描述】:
调用以下函数后,我无法写入我尝试过的任何文件 c++ fstream 和 c 的 fopen 出了什么问题,请帮助提前谢谢 我正在使用代码块 mingw windows 7
string openFileDialog(HWND hwnd,char *fileFilter,char *defaultExtension)
{
string fileName = "";
OPENFILENAME ofn;
char szFileName[MAX_PATH] = "";
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = hwnd;
ofn.lpstrFilter = fileFilter;
ofn.lpstrFile = szFileName;
ofn.nMaxFile = MAX_PATH;
ofn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
ofn.lpstrDefExt = defaultExtension;
if(GetOpenFileName(&ofn)) {
fileName.assign(szFileName);
}
ZeroMemory(&ofn, sizeof(ofn));
return fileName;
}
【问题讨论】:
-
您是否检查过您返回的字符串是否有效?当
GetOpenFileName返回FALSE时会发生什么? 如何打开文件?你为什么在回来之前打电话给ZeroMemory?由于不再使用该结构,因此不需要它。 -
fileFilter的值是多少?这是一个棘手的问题。还有,为什么不是const参数? -
那么这个函数没有错误,但是你如何处理文件。请告诉我们您如何打开和读取/写入文件。
-
如果您在对话框中更改文件夹,它将更改您进程的当前文件夹 - 尝试添加
OFN_NOCHANGEDIR标志。