本人在EVC中读取DXF文件,直接在菜单栏里添加的消息响应:
void CNXFReadDoc::OnReadDxf() 
{
   
CFileDialog dlg(true,NULL,NULL,NULL,_T("DXF(*.dxf)|*.dxf||"));
if(dlg.DoModal() == IDOK)
{
       m_dxfFile = new CReadDxfFile();
                FILE *fp=NULL;
       
    
       CString sPath;
       sPath = dlg.GetPathName();
         
                fp=_tfopen(sPath,_T("r"));//
        
      m_dxfFile->DxfReadData(fp);
}

InvalidateRect(NULL,NULL,true);//能正确读出DXF信息,但是调试到此处无法进入消息映射
                                        //即文件读完后,消息不能响应DispachMessage 
}CallStack中内容如下:
CNXFReadDoc::OnReadDxf() line 107 ///////*此处出现错误,运行时出现Assertion Failed  afxwin2.inl,109**//////
_AfxDispatchCmdMsg(CCmdTarget * 0x000d2b20 {CCmdTarget}, unsigned int 32771, int 0, void (void)* 0x00011041 CNXFReadDoc::OnReadDxf(void), void * 0x00000000, unsigned int 12, AFX_CMDHANDLERINFO * 0x00000000) line 97
CCmdTarget::OnCmdMsg(unsigned int 32771, int 0, void * 0x00000000, AFX_CMDHANDLERINFO * 0x00000000) line 311 + 39 bytes
CDocument::OnCmdMsg(unsigned int 32771, int 0, void * 0x00000000, AFX_CMDHANDLERINFO * 0x00000000) line 1024 + 24 bytes
CView::OnCmdMsg(unsigned int 32771, int 0, void * 0x00000000, AFX_CMDHANDLERINFO * 0x00000000) line 181 + 33 bytes
CFrameWnd::OnCmdMsg(unsigned int 635049, int -1, void * 0x160cf960, AFX_CMDHANDLERINFO * 0x00055145) line 1083 + 33 bytes
CWnd::OnCommand(unsigned int 393666, long 1) line 2282
CFrameWnd::OnCommand(unsigned int 369949252, long 254222) line 374请大侠相助!!!!!

解决方案 »

  1.   

    要关闭文件.
    new了个对象也要删除吧?
      

  2.   

    谢谢啊 在同一文件里 new了 可以 delete吗...我试了下没有作用啊;你说的具体行是指什么啊 ,不是我读取文件实现代码吗?在程序中的错误行就是:
    InvalidateRect(NULL,NULL,true);//能正确读出DXF信息,但是调试到此处无法进入消息映射
    这行后...
      

  3.   

    晕 怎么沉那么快啊 上面的那位同晓,文件的同一程序中应该不能delete的吧,所以我应该在哪里delete呢
      

  4.   

    定位到afxwin2.inl,109 发现是:
    _AFXWIN_INLINE void CWnd::EndPaint(LPPAINTSTRUCT lpPaint)
    { ASSERT(::IsWindow(m_hWnd)); ::EndPaint(m_hWnd, lpPaint); }