停靠CControlBar派生窗口

时间:2008-10-02 19:10:11

标签: c++ visual-studio winapi visual-c++ mfc

如何将CControlBar派生窗口停靠在拆分器窗口(CSplitterWnd)的中间?我希望每当移动分割器时都要重新定位条。

为了让我更清楚一点,我想象一下Visual Studio中对话框编辑器中的垂直标尺(仅限MFC)。每当调整树视图大小时,它都会重新定位。

2 个答案:

答案 0 :(得分:1)

阿尔夫,

如果是VS,则不使用分割器: 资源视图是一个可调整大小的ControlBar(它看起来和感觉像分裂器,但它不是CSplitterWnd)。 其余的是子框架(选项卡或MDI。转到工具/选项/环境/常规并选择多个文档来说服自己)。标尺是子框架的一部分(控制栏?)。

在你的情况下,我认为你不需要3个窗格分割器。您需要一个2窗格分割器,控制栏应该是您视图的一部分(它本身不是CControlBar)。除非您使用MDI,否则您可以在子框架中将其设置为真正的ControlBar。

HTH

答案 1 :(得分:0)

塞尔, 我道歉,我不是很清楚。拆分器位于资源视图和标尺栏之间。它会像这样说起来:

资源视图|垂直标尺|图

无论如何,我找到了(现在很明显的)答案:将主框架分成三个窗口:

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