0

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

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

4

2 回答 2

1

阿尔夫,

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

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

高温高压

于 2008-10-10T10:15:48.067 回答
0

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)));
于 2008-10-03T23:06:54.177 回答