CFileDialog第一次打开没问题,可是第二次打开后,鼠标在弹出的对话框中,晃几晃,就报错,调试后的错误信息是:
Unhandled exception in LedDram.exe(SHELL32.DLL):0xC0000005:Access Violation我知道一般定义了#define   _WIN32_WINNT   0x0500   
时,用vc6.0时会出现这个问题,可我的工程里没有定义过宏为0x0500的后来我换为OPENFILENAME,可还是错误依旧实在郁闷,哪个大虾遇到过这种情况呢?

解决方案 »

  1.   

    以前我遇到过类似的情况,原因是Adobe Reader坏了。当然你这个不一定,可以换台机器试试,估计不是程序的问题,而是系统的问题。
      

  2.   

    也是,我以前在台式机上从没出现这中问题,可最近买了台笔记本,所以问题就出来了。
    刚开始时,我还以为是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;
    }
    如果搞不定的话,就只有重新装操作系统了,想起来以前,我也在台式机上做了另一个系统,在我的电脑上好好的,可放在他的笔记本上时,将他的电脑搞死两次
      

  3.   

    binjuny(binjuny)兄:关于调试的问题,当然我做了不只一遍,但突然蹦出的全是汇编语言,自己看了又不知道是什么意思,太难受了。
      

  4.   

    我使用的是Windows XP Home Edition+Visual Studio.NET 2003(台式机和笔记本应该问题不大)
    1、我新建一个Dialog工程
    2、加入一个Button
    3、粘过去你的代码
    测试结果,你的代码没有提示错误。
    测试过程:点按钮,选择一个文件,再点按钮,选择另一个文件,再点按钮,选择取消,再点按钮,选择取消。最后退出程序。所以说Mackz 说:过滤器不对,我认为不会产生你说的“报错”
      

  5.   

    用map文件来查看你出错的代码行。
      

  6.   

    谢谢各位,重装了os问题解决了。
    可能是在装别的软件的时候,破坏了vc
      

  7.   

    官方网有说明
    http://support.microsoft.com/kb/909486/en-us