1

大家好,我在 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 个窗口的请求大小已触发 APP.exe 中的断点。这可能是由于堆损坏,这表明 APP.exe 或其已加载的任何 DLL 中存在错误。这也可能是由于用户在 APP.exe 具有焦点时按 F12。输出窗口可能有更多诊断信息



当我单击新文件夹时,我收到一个异常,说我的 app.exe 已触发断点。应用程序崩溃。我曾尝试使用 OFN_EXPLORER 等不同的标志,但没有运气。

MSDN 没有提供很多关于标志的信息。你能帮我吗?

4

1 回答 1

3

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

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

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

于 2013-11-09T20:42:10.210 回答