一直都是没事的,今天突然在切换窗口时弹出这个错误。
0x78fdef48 (mfc100d.dll) 处有未经处理的异常: 0xC0000005: 读取位置 0xcdce52bd 时发生访问冲突
其他的切换就没问题,就是这里突然调用不了,求指教。。

解决方案 »

  1.   

    这个时候调用的时候先看m_wndSplitter是否正确.才能调用后面的GetPane
      

  2.   

    是这条语句错了,还是在那个整个函数中错了?LZ贴下createclient()的代码吧
      

  3.   

    不会错的吧,一直这么用,就是改着改着突然出现这个错误,神奇了,我跳过那步直接收数据解决了问题,但是还是很想知道原因,有人和我出现过同样错误吗?
    int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
    if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
    return -1;    if (!m_wndStatusBar.Create(this) ||   
    !m_wndStatusBar.SetIndicators(indicators,   
    sizeof(indicators)/sizeof(UINT)))   
    {   
    TRACE0("未能创建状态栏\n");   
    return -1;      // 未能创建   
    }   
    // TODO: 如果不需要工具栏可停靠,则删除这三行   
    m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);   
    // EnableDocking(CBRS_ALIGN_ANY);   
    // DockControlBar(&m_wndToolBar);   
    // 获取窗口的菜单句柄   
    //SetMenu(NULL);
    return 0;
    }
      

  4.   

    单个语句应该是没问题的,可能响应上不对吧窗口划分是写在OnCreateClient中的,贴OnCreate有什么用啊
      

  5.   

    BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs,CCreateContext *pContext)
    {
    if (!m_wndSplitter.CreateStatic(this,1,2))
    {
    return FALSE;
    }
    CRect rect; 
    GetClientRect(rect); if (!m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CTreeList),CSize(180,100),pContext)
    ||!m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CDefault),CSize(100,100),pContext))
    {
    m_wndSplitter.DestroyWindow();
    return FALSE;
    }
    CView* pView=(CView*)m_wndSplitter.GetPane(0,0);
    ((CTreeList *)pView)->takeM(this);
    return TRUE;
    }恶汗,贴错了。。