CFileDialog第一次打开没问题,可是第二次打开后,鼠标在弹出的对话框中,晃几晃,就报错,调试后的错误信息是:
Unhandled exception in LedDram.exe(SHELL32.DLL):0xC0000005:Access Violation我知道一般定义了#define _WIN32_WINNT 0x0500
时,用vc6.0时会出现这个问题,可我的工程里没有定义过宏为0x0500的后来我换为OPENFILENAME,可还是错误依旧实在郁闷,哪个大虾遇到过这种情况呢?
Unhandled exception in LedDram.exe(SHELL32.DLL):0xC0000005:Access Violation我知道一般定义了#define _WIN32_WINNT 0x0500
时,用vc6.0时会出现这个问题,可我的工程里没有定义过宏为0x0500的后来我换为OPENFILENAME,可还是错误依旧实在郁闷,哪个大虾遇到过这种情况呢?
刚开始时,我还以为是vc的缘故,就重装了一次vc,可依旧是这样,刚才又查过资料了,有人说这可能是一个Debug,建议用OPENFILENAME,可用了之后,还是照错。
我要测试的这段代码很简单:
CFileDialog dlg(true,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"文本文件(*.txt)||文本文件(*.TXT)");
CString strFileName;
if(dlg.DoModal()==IDOK)
{
strFileName=dlg.GetPathName();
if(strFileName=="")return;
}
else
{
return;
}
如果搞不定的话,就只有重新装操作系统了,想起来以前,我也在台式机上做了另一个系统,在我的电脑上好好的,可放在他的笔记本上时,将他的电脑搞死两次
1、我新建一个Dialog工程
2、加入一个Button
3、粘过去你的代码
测试结果,你的代码没有提示错误。
测试过程:点按钮,选择一个文件,再点按钮,选择另一个文件,再点按钮,选择取消,再点按钮,选择取消。最后退出程序。所以说Mackz 说:过滤器不对,我认为不会产生你说的“报错”
可能是在装别的软件的时候,破坏了vc
http://support.microsoft.com/kb/909486/en-us