在一个单文档程序里,
定义了一个框架类,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),在这个范围内拖拽缩小窗口视图也不会出错?请大伙给看看吧,我弄了很久,要疯掉啦!一定给高分!
但是新问题又来了;正如我前面说的:
“因为窗口大小是:CRect(0,0,400,400),在这个范围内拖拽缩小窗口视图也不会出错?”
就是说OnMouseMove在这个区域里面没有响应,而且拆分条是可以看见的,但是不能拖拽拆分条,当窗口大于CRect(0,0,400,400),这个区域时的拆分条那部分才能选中拖拽,
一定是什么东西挡在了CRect(0,0,400,400),这个区域里了请帮帮我吧,上面的问题算是完了,回答了这个问题还是一样给分!!!!多谢了!!!