我用的是vc6.0编译器,在主对话框的按钮响应处理函数中,如下代码:
void CTabDlg::OnButton7()
{
CString strFilter="ËùÓÐÖ§³ÖÎļþ(*.mp3,*.wav,*.wma)|*.mp3;*.wav;*.wma||";
CFileDialog filedlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,strFilter);
if (IDOK == filedlg.DoModal())
{
filedlg.GetFileName();
return ; //出错(1)
}
} //出错(2)
在(1)处是按打开出现0x7c809823指令引用的0x422d7359内存,该内存不能为written,在(2)处是按取消或者关闭按钮出现的是0x7c809823指令引用的0xccccccc0内存,该内存不能为written。
首先是这段程序没有错误,我在其他的project中运行实验过,完全正常,但是,当我放到当前的project中的时候,由于需要在StdAfx.h中添加了如下宏定义
#define WINVER 0x0500
#define _WIN32_WINNT 0x0500
然后再次编译运行这段程序,就会出现如题的在call stack中的错误位置点
KERNEL32! 7c809823()
CFileDialog::~CFileDialog() + 71 bytes
调试时候,在输出窗口最后显示的是First-chance exception in Tab.exe (KERNEL32.DLL): 0xC0000005: Access Violation.
请高手帮助分析一下。这个应该不是单个人的错误。