MFC SDI でのビューの表示・非表示切り替え – プログラミング – Home

MFC SDI でのビューの表示・非表...
 
通知
すべてクリア

[解決済] MFC SDI でのビューの表示・非表示切り替え


たかぎ
 たかぎ
(@たかぎ)
ゲスト
結合: 20年前
投稿: 5
Topic starter  

開発環境 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);
}


引用未解決
トピックタグ
水の
 水の
(@水の)
ゲスト
結合: 20年前
投稿: 5
 

同じフレームワークに重ねて複数ビューを表示できるかという事ですか?


返信引用
たかぎ
 たかぎ
(@たかぎ)
ゲスト
結合: 20年前
投稿: 5
Topic starter  

水のさん
そのとおりです。

何か良い方法ありませんか?


返信引用
yank
 yank
(@yank)
ゲスト
結合: 20年前
投稿: 3
 

splitterのpaneの表示切り替えならここにサンプルが

http://www.codeguru.com/Cpp/W-D/splitter/


返信引用
たかぎ
 たかぎ
(@たかぎ)
ゲスト
結合: 20年前
投稿: 5
Topic starter  

yankさん ありがとうございます。

しかし、サンプルが多すぎてどれなのかわかりません。

みみませんが、どのページか教えて頂けませんか?


返信引用
yank
 yank
(@yank)
ゲスト
結合: 20年前
投稿: 3
 

何がしたいのか、いまいち文面からはわかりません

splitterで画面を分割して 表示/非表示 したいならこれ

http://www.codeguru.com/Cpp/W-D/splitter/article.php/c1543/

エクスプローラーやIEみたいな感じにしたいなら
splitterじゃ無くて、ControlBarにした方がいいんじゃないの


返信引用
wood
 wood
(@wood)
ゲスト
結合: 23年前
投稿: 895
 

MSのサンプルでVSWAP32と言うサンプルをお勧めしてます
が分割ウィンドウは使ってません


返信引用
たかぎ
 たかぎ
(@たかぎ)
ゲスト
結合: 20年前
投稿: 5
Topic starter  

本当にどうしようもない初心者です。
VSWAP32のサンプルは何処で入手可能ですか?
ググっても見つかりませんでした。


返信引用
wood
 wood
(@wood)
ゲスト
結合: 23年前
投稿: 895
 

http://support.microsoft.com/default.aspx?scid=kb;en-us;Q141334
又は、MSDNお持ちあれば、CDの中にあるはずです


返信引用
wood
 wood
(@wood)
ゲスト
結合: 23年前
投稿: 895
 

ここの過去ログ「VSWAP32」をキーワードに検索してみてください
良い面・悪い面の解説や、カストマイズポイントなど参考になると思います


返信引用
たかぎ
 たかぎ
(@たかぎ)
ゲスト
結合: 20年前
投稿: 5
Topic starter  

woodさま ありがとうございました。
無事できました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました