我用的单文档多视图,转换视图的代码如下:
void CMainFrame::OnMultiline()
{
ischecked=!ischecked; CJNoteDoc* pDoc=(CJNoteDoc*)GetActiveDocument(); if(m_pNoMultiView==0)
{
m_pDefaultView=(CJNoteView*)GetActiveView();//获取默认视图
m_pNoMultiView=new NoMultiView;//创建新视图
m_pNoMultiView->Create(NULL,NULL,AFX_WS_DEFAULT_VIEW,rectDefault,this,AFX_IDW_PANE_FIRST+1);//创建新视图窗口
}
if(ischecked)//允许自动换行
{
pDoc->AddView(m_pDefaultView); m_pDefaultView->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
m_pNoMultiView->SetDlgCtrlID(AFX_IDW_PANE_FIRST+1); m_pDefaultView->ShowWindow(SW_SHOW);
m_pNoMultiView->ShowWindow(SW_HIDE); SetActiveView(m_pDefaultView); pDoc->RemoveView(m_pNoMultiView); this->RecalcLayout();
}
else //不允许自动换行
{
pDoc->AddView(m_pNoMultiView);到这一行就出错了//添加视图 m_pDefaultView->SetDlgCtrlID(AFX_IDW_PANE_FIRST+1);
m_pNoMultiView->SetDlgCtrlID(AFX_IDW_PANE_FIRST); m_pDefaultView->ShowWindow(SW_HIDE);
m_pNoMultiView->ShowWindow(SW_SHOW); SetActiveView(m_pNoMultiView);
pDoc->RemoveView(m_pDefaultView); this->RecalcLayout();
}
}
提示错误是0x01554d1c 处最可能的异常: 0xC0000005: 读取位置 0xfeeefeee 时发生访问冲突。
我在调试过程中发现到pDoc->AddView(m_pNoMultiView)这一行(见代码)就会出错,而且在出错之前有Warning: Window creation failed: GetLastError returns 0x00000579。那应该是m_pNoMultiView->Create有问题,导致创建不成功。同时我发现m_pNoMultiView的hWnd=0xfeeefeee。
请问这是什么问题?
先谢过大家了