CFileDialog在新文件夹点击时崩溃

时间:2013-11-08 19:20:23

标签: c++ visual-c++ mfc

你好,我在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不会提供有关标志的大量信息。你能帮忙吗?

1 个答案:

答案 0 :(得分:3)

正如我上面评论的那样,您需要更改过滤器才能正确终止(请注意末尾的“||”):

char szFilters[]= "Text Files(*.txt)|*.txt|Register File Definition Files(*.rgf)|*.rgf|All Files(*.*)|*.*||";

不这样做肯定会导致问题,因为过滤字符串将被解析超出其结束。