到下面的函数,我不能写我想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'参数? – Medinoc
我传递openFileDialog(NULL,“Image Files \ 0 * .png; *。jpg; *。jpeg; * .gif; * .bmp \ 0”,“*。*”);和函数返回的文件名是有效的,函数按预期工作,但在调用它之后没有进一步的文件写入/修改操作工作 – miko1