CControlBar 派生ウィンドウを分割ウィンドウ (CSplitterWnd) の中央にドッキングするにはどうすればよいですか? スプリッターを移動するたびにバーの位置を変更したいと思います。
私が求めているものをもう少し明確にするために、Visual Studio のダイアログ エディター (MFC のみ) の垂直ルーラーを想像してください。ツリー ビューのサイズが変更されるたびに再配置されます。
CControlBar 派生ウィンドウを分割ウィンドウ (CSplitterWnd) の中央にドッキングするにはどうすればよいですか? スプリッターを移動するたびにバーの位置を変更したいと思います。
私が求めているものをもう少し明確にするために、Visual Studio のダイアログ エディター (MFC のみ) の垂直ルーラーを想像してください。ツリー ビューのサイズが変更されるたびに再配置されます。
アルフ、
VS の場合、スプリッターは使用されません。リソース ビューはサイズ変更可能な ControlBar です (スプリッターのように見えますが、CSplitterWnd ではありません)。残りは子フレームです (タブ付きまたは MDI のいずれかです。ツール/オプション/環境/全般に移動し、複数のドキュメントを選択して納得してください)。定規は子フレームの一部 (コントロールバー?) です。
あなたの場合、3ペインスプリッターは必要ないと思います。2 ペイン スプリッターが必要であり、コントロール バーはビューの一部である必要があります (それ自体は CControlBar ではありません)。MDI を使用しない限り、子フレームで真の ControlBar にすることができます。
HTH
セルジュ、すみません、よくわかりませんでした。スプリッターは、リソース ビューとルーラー バーの間に配置されます。次のようになります。
リソース ビュー | 垂直定規 | 写真 垂直定規 意見
いずれにせよ、私は(今や明らかな)答えを見つけました:メインフレームを3つのウィンドウに分割します:
m_wndSplitter.CreateStatic(this, 1, 3);
m_wndLeftPane.Create(&m_wndSplitter,WS_CHILD|WS_VISIBLE,m_wndSplitter.IdFromRowCol(0, 0));
m_ruler.Create(&m_wndSplitter,WS_CHILD|WS_VISIBLE,m_wndSplitter.IdFromRowCol(0, 1));
m_wndSplitter.CreateView(0, 2, pContext->m_pNewViewClass, CSize(300, 0), pContext);
SetActiveView((CScrollView*)m_wndSplitter.GetDlgItem(m_wndSplitter.IdFromRowCol(0, 2)));