解决方案 »

  1.   

    你逐步修改调试,去找问题
    CFileDialog fd(TRUE,"*.ZIP","",OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"ZIP文件|*.ZIP|",NULL);
    你改成这样,看看还死不死
      

  2.   

    拿着你的代码,试试没有问题看上去,也没啥问题...有点小建议,既然new了,又delete了,为何不使用局部变量
      

  3.   

    你好,这个问题是不定时出现的,,,所以很苦恼,可能在别的电脑都不出现,,,。你可以帮忙分析一下一般会是啥原因,,,,,。另外,我的pFileDlg不是局部变量么,,,,
      

  4.   

    这个,我也不知道为什么,只是平时一直这么用,从来没出现过问题。
    不过你这里确实不需要new,临时变量就可以了。
    你的开发环境是什么?
      

  5.   

    我这样做你这个,没发现问题    CString szFilters = _T("所有文件(*.*)|*.*||");
    CFileDialog fileDlg(true, NULL, NULL, OFN_NOCHANGEDIR, szFilters, this);
    if(fileDlg.DoModal()!=IDOK)
    {
    // 操作完成
    return;
    }
      

  6.   

    我的环境是,windows server 2008 R2 + vs2005;
    我先按你那样改试试。至少看着概率小了,,,。
    另外,我是在网上看到有人说new了之后能解决问题,我才这么做的,不过不起作用
      

  7.   

    如果是VS2005的话,需要安装SP1的补丁
      

  8.   

    没见人会new CFileDialog。直接用CFileDialog dlg不行么。试试这个再说
      

  9.   

    文件对话框是模态的,你用new和delete来搞就会有问题
      

  10.   

    我就是因为直接用出问题,然后有人说用new能解决,才这么做的,,,,
      

  11.   

    要new是因为MFC 6.0的bug,没有预估到Windows 2000会增加OPENFILENAME的大小
    7.0以上版本的MFC不用new
    基本上,如果Windows的资源管理器会崩溃的场合,文件对话框也经常会崩溃,所以要经常看是不是有KB2718841这样的补丁出来,或者是不是安装了Adobe PDF的文件预览插件。
      

  12.   

    检查是否资源泄漏的办法之一:
    在任务管理器 进程 查看 选择列 里面选择:内存使用、虚拟内存大小、句柄数、线程数、USER对象、GDI对象
    让你的程序(进程)不退出,循环执行主流程很多遍,越多越好,比如1000000次甚至无限循环,记录以上各数值,再隔至少一小时,越长越好,比如一个月,再记录以上各数值。如果以上两组数值的差较大或随时间流逝不断增加,则铁定有对应资源的资源泄漏!