你好,我在MFC中维护这段代码
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过去请求的大小为4
Windows已在APP.exe中触发断点。
这可能是由于堆的损坏,这表明APP.exe或其加载的任何DLL中存在错误。
这也可能是由于用户在APP.exe具有焦点时按下F12。
输出窗口可能包含更多诊断信息
当我点击新文件夹时,我得到一个异常,说我的app.exe触发了一个断点。和应用程序崩溃。我尝试过使用OFN_EXPLORER等不同的标志,但没有运气。
MSDN不会提供有关标志的大量信息。你能帮忙吗?
答案 0 :(得分:3)
正如我上面评论的那样,您需要更改过滤器才能正确终止(请注意末尾的“||”):
char szFilters[]= "Text Files(*.txt)|*.txt|Register File Definition Files(*.rgf)|*.rgf|All Files(*.*)|*.*||";
不这样做肯定会导致问题,因为过滤字符串将被解析超出其结束。