我是新手,希望高手们帮我解决一个问题:
    我用vc2008 写了一个文件管理器但是在编译时出现了一个问题
    Debug assertion faild
        点retry之后出现
        unknown software exception (0x80000003),位置为 0x78a7953d

解决方案 »

  1.   

    写了一个文件管理器但是在编译时出现了一个问题 ==显然这不是编译时候会出现的错误,而是在调试运行的时候才出现的。
    你看一下提示出错的行,应该是ASSERT报错。可能是某个指针或对象不满足条件。比如句柄为空或指针为空等
      

  2.   

    跟进去了  ASSERT(::IsWindow(m_hWnd));  return (HTREEITEM)::SendMessage(m_hWnd, TVM_INSERTITEM, 0, (LPARAM)lpInsertStruct); }
      

  3.   

    那就是说m_hWnd不是窗口句柄呗。
    楼主核对下?
      

  4.   

    m_hWnd是空的,或者不是一个窗口对象。看一下你写的代码中debug出错时指向哪一句吧。该句中的窗口不对,你怎么来的这个窗口,说清楚。
      

  5.   

    void C文件管理器Dlg::InitPath()
    {
      wchar_t *pLogicalDrivers=new wchar_t[MAX_PATH];
      pLogicalDrivers[0]='\0';
      int nLen=GetLogicalDriveStrings(MAX_PATH-1,pLogicalDrivers);//获取逻辑分区列表
      if(nLen==0)
      {
      return;
      }
      int nDriverNameLength=wcslen(L"C:\\")+1;//格式为“C:\”
      int i=0;
      TVINSERTSTRUCT tvInsertItem;
      tvInsertItem.hParent=NULL;
      tvInsertItem.hInsertAfter =NULL;
      tvInsertItem.item.mask=TVIF_TEXT;
      do
      {
      tvInsertItem.item.pszText=pLogicalDrivers+i;
      m_tcDirectories.InsertItem(&tvInsertItem);//目录树中增加逻辑分区
    出错指向的句子:   i+=nDriverNameLength;
      }while(i<nLen);  delete[] pLogicalDrivers;//回收缓冲区}              
      谢谢帮我看看吧~~我不懂  m_hWnd是空的,或者不是一个窗口对象  ,我大二才,要解决这个问题该看什么书呀
      

  6.   

    m_tcDirectories从哪来的?
    大二厉害的多着了。现在的孩子从小就开始用电脑了。不是10年前了。
      

  7.   

    我定义了一个
    private:
    CTreeCtrl m_tcDirectories;