如何将 CControlBar 派生窗口停靠在拆分器窗口 (CSplitterWnd) 的中间?我希望在移动分离器时重新定位条。
为了让我更清楚地了解我所追求的,想象一下 Visual Studio 中对话框编辑器中的垂直标尺(仅限 MFC)。每当调整树视图的大小时,它都会重新定位。
如何将 CControlBar 派生窗口停靠在拆分器窗口 (CSplitterWnd) 的中间?我希望在移动分离器时重新定位条。
为了让我更清楚地了解我所追求的,想象一下 Visual Studio 中对话框编辑器中的垂直标尺(仅限 MFC)。每当调整树视图的大小时,它都会重新定位。
阿尔夫,
在 VS 的情况下,没有使用拆分器:资源视图是一个可调整大小的 ControlBar(它看起来和感觉像一个拆分器,但它不是 CSplitterWnd)。其余的是子框架(选项卡式或 MDI。转到工具/选项/环境/常规并选择多个文档来说服自己)。标尺是子框架的一部分(控制栏?)。
在您的情况下,我认为您不想要 3 个窗格拆分器。您需要一个 2 窗格拆分器,并且控制栏应该是您的视图的一部分(它本身不是 CControlBar)。除非您在这种情况下使用 MDI,否则您可以在子框架中将其设置为真正的 ControlBar。
高温高压
Serge,对不起,我不是很清楚。拆分器将位于资源视图和标尺栏之间。它看起来像这样:
资源视图 | 垂直尺 | 看法
无论如何,我找到了(现在显而易见的)答案:将主框架分成三个窗口:
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)));