【问题标题】:Docking CFormView in SDI在 SDI 中对接 CFormView
【发布时间】:2014-04-14 19:52:33
【问题描述】:

我有一个 SDI 应用程序 [MFC],它带有两个 spitter,将视图分为 3 个视图。我在哪里实现了在所有 3 个视图中都有 CListCtrl/CtreeCtrl 的 CFormview。

我想要的是使控件适合应用程序中的屏幕。 Ctrl 不适合屏幕,并且在扩展或缩小 spitter 时无法缩放。那么如何实现适合屏幕的功能呢?

谢谢

【问题讨论】:

    标签: visual-c++ mfc sdi


    【解决方案1】:

    CFormView 具有静态大小并且通常可以滚动。所以这不是你真正的解决方案。 所以不要使用 CFormView。

    您可以使用拆分窗口再次划分每个窗格,以保存您的树 ctrl 和列表 ctrl。 如果您不需要 Doc/View,请创建您自己的包含 CListCtrl 和 CTreeCtrl 的 CWnd 并覆盖 WM_SIZE 并调整其中的两个子控件的大小。

    使用 CView 作为父级也可以,再次覆盖 WM_SIZE 以便子控件进入视图的完整区域。

    如果你使用 CWnd 或 CView 作为父类,考虑使用 IsDialogMessage 来处理两个窗口之间的 VK_TAB 键盘切换...

    【讨论】:

    • CFormView 是可调整大小的。这样做的主要障碍是对话框必须具有可调整大小的边框。另外,我几乎可以肯定,这里的“覆盖”应该是“覆盖”,如果你是德国人,那么这几乎可以肯定。
    【解决方案2】:

    当拆分器更改任何窗格窗口的大小时,该窗口接收 WM_SIZE。将 WM_SIZE 处理程序添加到 CFormView(s) 并在该函数中调整子控件的大小以适应。 WM_SIZE 将新大小传递给您,m_some_control.MoveWindow(...) 可用于调整每个控件的大小。

    【讨论】:

      猜你喜欢
      • 2021-06-20
      • 1970-01-01
      • 1970-01-01
      • 2010-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-16
      相关资源
      最近更新 更多