開発環境 VC++6.0 MFC SDI WindowsXP
SDI でビューの非表示・表示の切り替えを行おうとしているのですが、エラーになっていまい
ます。
MDIプログラムでないと非表示・表示の切り替えは行えないのでしょうか?
ちなみに
ビューを削除してから、また違うビューを作成するアルゴリズムは上手くいきました。
BOOL CMainFrame::OnCreateClient( LPCREATESTRUCT /*lpcs*/,
CCreateContext* pContext)
{
// 分割ウィンドウを作成します
CRect cr;
BOOL rc;
if (!m_wndSplitter.CreateStatic(this,1,2)){// 1行2列のビューを作成
TRACE0(Failed to create split bar );
return FALSE; // failed to create
}
GetClientRect(&cr); // ウィンドウの幅を取得
CSize paneSize(cr.Width()/4, cr.Height());
CSize paneSize1(3*cr.Width()/4, cr.Height());
((CCADExplorerApp*)AfxGetApp())->m_pDoc=(CCADExplorerDoc*)(pContext-
>m_pCurrentDoc);
pContext->m_pCurrentFrame=this;
rc=m_wndSplitter.CreateView(0, 0,pContext->m_pNewViewClass,paneSize,
pContext);
if(!rc)return FALSE;
pContext->m_pNewViewClass=RUNTIME_CLASS(CCADExplorerView);
pContext->m_pCurrentDoc=((CCADExplorerApp*)AfxGetApp())->m_pDoc;
pContext->m_pCurrentFrame=this;
rc=m_wndSplitter.CreateView(0,1,pContext-
>m_pNewViewClass,paneSize1,pContext);
m_wndSplitter.RecalcLayout();
m_wndSplitter.SetActivePane(0,1);
return rc;
}
void CMainFrame::OnSwitchSearchView()
{
//左側画面 検索
CRect cr;
GetClientRect(&cr);
CSize paneSize1(cr.Width()/4, cr.Height());
CCreateContext Context;
Context.m_pNewViewClass=RUNTIME_CLASS(SearchView);
Context.m_pCurrentDoc=((CCADExplorerApp*)AfxGetApp())->m_pDoc;
Context.m_pCurrentFrame=this;
Context.m_pNewDocTemplate=Context.m_pCurrentDoc->GetDocTemplate();
Context.m_pLastView=(CFormView*)m_wndSplitter.GetPane(0,1);
m_wndSplitter.DeleteView(0, 0);
m_wndSplitter.CreateView(0, 0,RUNTIME_CLASS(SearchView),paneSize1,
&Context);
SearchView *pView=(SearchView*)m_wndSplitter.GetPane(0,0);
pView->GetParentFrame()->RecalcLayout();
m_wndSplitter.RecalcLayout();
pView->OnInitialUpdate();
m_wndSplitter.SetActivePane(0,0);
}
同じフレームワークに重ねて複数ビューを表示できるかという事ですか?
水のさん
そのとおりです。
何か良い方法ありませんか?
yankさん ありがとうございます。
しかし、サンプルが多すぎてどれなのかわかりません。
みみませんが、どのページか教えて頂けませんか?
何がしたいのか、いまいち文面からはわかりません
splitterで画面を分割して 表示/非表示 したいならこれ
http://www.codeguru.com/Cpp/W-D/splitter/article.php/c1543/
エクスプローラーやIEみたいな感じにしたいなら
splitterじゃ無くて、ControlBarにした方がいいんじゃないの
MSのサンプルでVSWAP32と言うサンプルをお勧めしてます
が分割ウィンドウは使ってません
本当にどうしようもない初心者です。
VSWAP32のサンプルは何処で入手可能ですか?
ググっても見つかりませんでした。
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q141334
又は、MSDNお持ちあれば、CDの中にあるはずです
ここの過去ログ「VSWAP32」をキーワードに検索してみてください
良い面・悪い面の解説や、カストマイズポイントなど参考になると思います
woodさま ありがとうございました。
無事できました。