MFC分割窗口的错误,求高人指点!急
BOOLCMainFrame::OnCreateClient(LPCREATESTRUCTlpcs,CCreateContext*pContext){//TODO:在此添...
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
// TODO: 在此添加专用代码和/或调用基类
//**************************************
CRect rect;
GetClientRect(&rect);
m_splitter.CreateStatic(this,1,2);
m_splitter.CreateView(0,1,pContext->m_pNewViewClass
,CSize(rect.Width()/2,rect.Height()/2)
,pContext);
m_splitter.CreateView(0,0,pContext->m_pNewViewClass
,CSize(rect.Width()/2,rect.Height()/2)
,pContext);
m_splitter.SetActivePane(0,0);
//**************************************
return true;//CMDIFrameWndEx::OnCreateClient(lpcs, pContext);
}
为什么运行到m_splitter.CreateView(0,1,pContext->m_pNewViewClass
,CSize(rect.Width()/2,rect.Height()/2)
,pContext);
就说我 “0x0041a29d 处有未经处理的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突”?求指点!这是个多文档应用程序 展开
{
// TODO: 在此添加专用代码和/或调用基类
//**************************************
CRect rect;
GetClientRect(&rect);
m_splitter.CreateStatic(this,1,2);
m_splitter.CreateView(0,1,pContext->m_pNewViewClass
,CSize(rect.Width()/2,rect.Height()/2)
,pContext);
m_splitter.CreateView(0,0,pContext->m_pNewViewClass
,CSize(rect.Width()/2,rect.Height()/2)
,pContext);
m_splitter.SetActivePane(0,0);
//**************************************
return true;//CMDIFrameWndEx::OnCreateClient(lpcs, pContext);
}
为什么运行到m_splitter.CreateView(0,1,pContext->m_pNewViewClass
,CSize(rect.Width()/2,rect.Height()/2)
,pContext);
就说我 “0x0041a29d 处有未经处理的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突”?求指点!这是个多文档应用程序 展开
1个回答
展开全部
看看pContext或者pContext->m_pNewViewClass是否是空指针。
如果不是,就只能跟踪调试汇编代码找问题了。
如果不是,就只能跟踪调试汇编代码找问题了。
追问
你好!我调试了一个下,发现pContext确实是空。求教处理方法?
追答
那你调用m_splitter.CreateView的时候就别用pContext->m_pNewViewClass了,用你自己为子窗口定义的视图类的类名的运行时类型:比如你左边的子窗口想用视图类CLeftView,右边的子窗口想用视图类CRightView,那么就分别用RUNTIME_CLASS(CLeftView)和RUNTIME_CLASS(CRightView)代替pContext->m_pNewViewClass。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询