【问题标题】:Docking a CControlBar derived window停靠 CControlBar 派生窗口
【发布时间】:2010-09-14 21:50:07
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    阿尔夫,

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

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

    HTH

    【讨论】:

      【解决方案2】:

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

      资源视图 |垂直尺 |查看

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-15
        • 1970-01-01
        相关资源
        最近更新 更多