在一个单文档程序里,
  定义了一个框架类,class CSpFrameWnd : public CFrameWnd
   并在在CSpFrameWnd  中用SplitterWnd 拆分了三个窗口,分别对应三个自定义View类来显示。 在app中如下方式创建了一个窗口,也就是用上面的框架创建窗口。
          CCreateContext pContext;
          pContext.m_pNewViewClass=RUNTIME_CLASS(CSp3View);
pContext.m_pCurrentDoc=new CMulFrameDoc();
 m_pMainFrame=new CSpFrameWnd();    
if(!m_pMainFrame->Create(AfxRegisterWndClass(0),"活动视图",(WS_OVERLAPPEDWINDOW |WS_VISIBLE|FWS_ADDTOTITLE) ,CRect(0,0,400,400),NULL,MAKEINTRESOURCE(IDR_ADDMENU),0,&pContext))
return FALSE;????????问题是:
    以上都已经成功运行,新建窗口也能够显示出来,并能在三个子窗口分别显示出在 创建时画好的图形。
    
    但是,当把该窗口拖拽放大时,就会显示出现错误
   “MulFrame.exe 中的 0x7c2399ba (mfc71d.dll) 处未处理的异常: 0xC0000005: 读取位置 0x00000020 时发生访问冲突 ”
    用debug 定位中断,到了winocc.cpp 中的下面函数的第二行,就运行不下去了,     void CWnd::SetWindowText(LPCTSTR lpszString)
{
ASSERT(::IsWindow(m_hWnd) || (m_pCtrlSite != NULL)); if (m_pCtrlSite == NULL)
::SetWindowText(m_hWnd, lpszString);
else
m_pCtrlSite->SetWindowText(lpszString);
}如果,拖拽放大时不施放鼠标,不刷新窗口,就不会出错。
因为窗口大小是:CRect(0,0,400,400),在这个范围内拖拽缩小窗口视图也不会出错?请大伙给看看吧,我弄了很久,要疯掉啦!一定给高分!

解决方案 »

  1.   

    ASSERT(::IsWindow(m_hWnd) || (m_pCtrlSite != NULL));满足这个断言的条件吗?
      

  2.   

    找到问题了,我在那 拆分的三个视类里面有OnMouseMove()负责显示鼠标的坐标值,显示的位置在框架的状态栏里,而我的这个框架没有状态栏,所以出错了,
    但是新问题又来了;正如我前面说的:
    “因为窗口大小是:CRect(0,0,400,400),在这个范围内拖拽缩小窗口视图也不会出错?”
    就是说OnMouseMove在这个区域里面没有响应,而且拆分条是可以看见的,但是不能拖拽拆分条,当窗口大于CRect(0,0,400,400),这个区域时的拆分条那部分才能选中拖拽,
    一定是什么东西挡在了CRect(0,0,400,400),这个区域里了请帮帮我吧,上面的问题算是完了,回答了这个问题还是一样给分!!!!多谢了!!!