分割ウィンドウの入れ替え – プログラミング – Home

分割ウィンドウの入れ替え
 
通知
すべてクリア

[解決済] 分割ウィンドウの入れ替え


まひ
 まひ
(@まひ)
ゲスト
結合: 23年前
投稿: 8
Topic starter  

はじめまして、まひと申します。
VC++6.0(MFC)の勉強を始めて一ヶ月の若輩者です。

MDIで↓のようにCSplitterWndを使用して分割ウィンドウを作成しました。
そこでメニューに切換えの項目を作り、[BView]と[CView]を入れ替えるプログラムを
組みたいのですが、どうしてもできませんでした。

|~~~~~~~|~~~~~~~|
| | BView |
| AView |-------|
| | CView |
|_______|_______|

どのようにすれば実現できるでしょうか?
ご教授よろしくお願いします。


引用未解決
トピックタグ
TAD
 TAD
(@TAD)
ゲスト
結合: 23年前
投稿: 54
 

入れ替えたいビューの ID を交換すれば可能です。
以下にソースを参考にしてみてください。

// 入れ替えるビューの取得
CView* pView1 = (CView*)m_wndSplitter.GetPane(0, 0);
CView* pView2 = (CView*)m_wndSplitter.GetPane(0, 1);

// ID の入れ替え
UINT nID1 = pView1->GetDlgCtrlID();
UINT nID2 = pView2->GetDlgCtrlID();
pView1->SetDlgCtrlID(nID2);
pView2->SetDlgCtrlID(nID1);

// ウィンドウ位置の入れ替え
CRect rcWnd1;
CRect rcWnd2;
pView1->GetWindowRect(rcWnd1);
pView2->GetWindowRect(rcWnd2);
m_wndSplitter.ScreenToClient(rcWnd1);
m_wndSplitter.ScreenToClient(rcWnd2);
pView1->MoveWindow(rcWnd2);
pView2->MoveWindow(rcWnd1);

ID だけを入れ替えれば認識されるはずなのですが、画面を更新させるために、
ウィンドウ位置も入れ替えています。


返信引用
まひ
 まひ
(@まひ)
ゲスト
結合: 23年前
投稿: 8
Topic starter  

TADさんレスありがとうございます。大変参考になりました。
GetPaneをつかってCWndを取得して何かやるんだろうな~
というところから進まなかったんです。

また、どうしても分からない事があった時はよろしくお願いします。
本当にありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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