2012-05-10 7 views
0

CreateStatic & CreateViewを使用して、ボタンコントロールを使用して複数のペイン(1x2、3x3など)に「C(クラス名)ビュー」を分割します。と列。 I(私はすべてのペインを削除することを意味します)1×1をクリックして、ASSERT(n_Row> 1 & & n_Colが> 1)明らかにCSplitterWnd :: CreateStaticの内側に失敗した今すべての静的分割ペインを削除する(1x1ビュー)

、。

「ノーペイン」の状況をどのように処理しますか?

これは(ペインを除去)DisplaySingleFrame()関数

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); 

これはで未処理の例外をスローしている "context.m_pCurrentDoc =(CN00bSplitDoc *)pDocTemplate-> CreateNewDocument();"

+0

pDocTemplateがNULLです。したがって、明らかに未処理の例外がスローされます。 – esh

答えて

0

C(classname)AppのInitInstanceにm_pDocTemplate=pDocTemplateを初期化していませんでした。

問題を解決します。

関連する問題