编写一个mfc小程序,有时出现access violation而异常退出,debug后发现shell32.dll是引起的,各位大侠给指条明路吧

解决方案 »

  1.   

    void CConvertDlg::Onbr() 
    {
    // TODO: Add your control notification handler code here
    CString strFile = _T("");    CFileDialog    dlgFile(TRUE, NULL, NULL, OFN_HIDEREADONLY, _T("Describe Files All Files (*.*)|*.*||"), NULL);    if (dlgFile.DoModal())
        {
            strFile = dlgFile.GetPathName();
        } if(strFile.IsEmpty()) { 
    return ;
    } GetDlgItem(file)->SetWindowText(strFile);
    }主要在浏览选取文件的时候出现
      

  2.   

    貌似没什么问题if (dlgFile.DoModal()) 这里应该是if (IDOK == dlgFile.DoModal())你错误在哪句。
      

  3.   

    debug出错后停在
    return AfxWinMain(hInstance, hPrevInstance, lpCmdLine, nCmdShow);
      

  4.   

    应该是CFileDialog的一个BUG参考:
    http://blog.vckbase.com/bluesky/archive/2008/02/16/21549.html
      

  5.   

      CFileDialog dlgFile(TRUE, NULL, NULL, OFN_HIDEREADONLY, _T("Describe Files All Files (*.*)|*.*||"), NULL);
    ----------
    这里,最后一个参数请不要传NULL。
    传个this试试看。。很久之前,我遇到和你一样的问题,后来查阅MSDN,说如果传NULL,会默认认为是Desktop的子窗体。
    就可能会造成一些问题,你改成传this,让你的Dialog成为CFileDialog的父窗体试试。
      

  6.   

    GetDlgItem(file)->SetWindowText(strFile);
    ----
    这里File是一个ID吗?
      

  7.   


    是,文本框id,显示选择的文件路径
    刚才看到这个http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=154039&SiteID=1,不知道是不是正解。