MFC移除所有静态拆分窗格(1x1视图)

MFC移除所有静态拆分窗格(1x1视图),mfc,Mfc,我使用CreateStatic和CreateView,使用按钮控件选择行数和列数,将“C(classname)视图”拆分为许多窗格(如(1x2)、(3x3)) 现在,当我单击1x1(这意味着我要删除任何窗格)时,断言(n_Row>1&&n_Col>1)显然在CSplitterWnd::CreateStatic内部失败 我如何处理“没有窗格”的情况 这是DisplaySingleFrame()函数(用于删除窗格) 这会在“context.m_pCurrentDoc=(CN00bSplitDoc*)

我使用CreateStatic和CreateView,使用按钮控件选择行数和列数,将“C(classname)视图”拆分为许多窗格(如(1x2)、(3x3))

现在,当我单击1x1(这意味着我要删除任何窗格)时,断言(n_Row>1&&n_Col>1)显然在CSplitterWnd::CreateStatic内部失败

我如何处理“没有窗格”的情况

这是DisplaySingleFrame()函数(用于删除窗格)


这会在“context.m_pCurrentDoc=(CN00bSplitDoc*)pDocTemplate->CreateNewDocument();”处引发未处理的异常。

我没有在
C(classname)应用程序的InitInstance中初始化
m_pDocTemplate=pDocTemplate


解决此问题。

pDocTemplate为空。因此,它显然会抛出一个未处理的异常。
CN00bSplitApp* pApp = (CN00bSplitApp*)AfxGetApp();
CView * pActiveView = NULL;

if(pActiveView == NULL)
{
if(m_pSplitter)
    pActiveView = (CView*)m_pSplitter->GetPane(0,0);
        else
    pActiveView = (CN00bSplitView *)GetActiveView();
}

m_iPrevColLayout = m_iRowLayout;
m_iPrevRowLayout = m_iColLayout;

m_iRowLayout = 0;
m_iColLayout = 0;

ShowWindow(SW_HIDE);

CRect rect(0,0,0,0);
pActiveView->GetClientRect(rect);
CDocument * pDoc= pActiveView->GetDocument();

pActiveView->DestroyWindow();

pActiveView = NULL;

if(m_pSplitter)
{
m_pSplitter->DestroyWindow();
delete m_pSplitter;
m_pSplitter = NULL;
}

CDocTemplate* pDocTemplate = pApp->m_pDocTemplate;

CCreateContext context;

context.m_pNewViewClass= RUNTIME_CLASS(CN00bSplitView);
context.m_pCurrentDoc=(CN00bSplitDoc*)pDocTemplate->CreateNewDocument();
context.m_pLastView=pActiveView;

CView* p = (CView*)CreateView(&context, AFX_IDW_PANE_FIRST);
SetActiveView(p);

p->OnInitialUpdate();

RecalcLayout();
ShowWindow(SW_SHOW);