CFileDialog crashes on new folder click
您好,我正在MFC中维护此代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | char szFilters[]="Text Files(*.txt)|*.txt|Register File Definition Files(*.rgf)|*.rgf|All Files(*.*)|*.*|"; CString fileName; pEdit->GetWindowText(fileName); CFileDialog fileDlg (TRUE,"txt", fileName, OFN_FILEMUSTEXIST | OFN_EXPLORER | OFN_NOCHANGEDIR, szFilters, this); // Display the file dialog. When user clicks OK, fileDlg.DoModal() // returns IDOK. if(IDOK == fileDlg.DoModal()) { fileName = fileDlg.GetPathName(); pEdit->SetWindowText(fileName); } |
这是Visual Studio消息:这可能是由于堆损坏所致,这表明APP.exe或其他程序中存在错误它可能已加载的DLL的数量。这也可能是由于用户在APP.exe具有焦点时按F12键。输出窗口可能具有更多的诊断信息。HEAP [APP.exe]:在00000000077C5DA0处的堆块已在00000000077C5DB4处修改为超出请求的大小的4Windows已在APP.exe中触发了一个断点。这可能是由于堆损坏所致,这表明APP.exe或它已加载的任何DLL中存在错误。这也可能是由于用户在按下APP.exe具有焦点。输出窗口可能包含更多诊断信息
当我单击新文件夹时,出现一个异常,说我的app.exe触发了断点。然后应用崩溃我尝试使用来自OFN_EXPLORER的其他标志等,但是没有运气。
MSDN并没有提供很多有关标志的信息。你能帮忙吗?
如上所述,您需要更改过滤器以正确终止(注意末尾的" || "):
1 | char szFilters[]="Text Files(*.txt)|*.txt|Register File Definition Files(*.rgf)|*.rgf|All Files(*.*)|*.*||"; |
不这样做绝对会导致问题,因为过滤字符串将超出其末尾进行解析。