【问题标题】:MFC DockablePane not floating or hidingMFC DockablePane 不浮动或隐藏
【发布时间】:2009-01-22 13:19:52
【问题描述】:

有什么方法可以使停靠在无法浮动或隐藏的窗口中的 MFC DockablePane(来自新功能包)(甚至禁用允许用户选择状态的上下文菜单 - 可停靠,浮动,隐藏等)

我基本上想要的是在一个窗口上有 3 个窗格,可以改变它们的水平尺寸,但不能改变它们在窗口内的位置。有什么建议吗?

【问题讨论】:

    标签: mfc-feature-pack dockable


    【解决方案1】:

    解决方案是扩展 CDockablePane 并在此类中覆盖以下事件:

    virtual BOOL CanFloat() const;
    virtual BOOL CanBeClosed() const;
    virtual BOOL CanAutoHide() const;
    

    所以他们返回 FALSE;

    更多信息见MSDN Customization Tips for the MFC Extensions

    【讨论】:

    • 感谢您的回答,它也帮助了我。只有一条评论:如果您不想将其他选项卡附加到此选项卡上,也可以覆盖 CanBeAttached():
      virtual BOOL CanBeAttached() const {return FALSE;}
      奇怪的事情:如果您的 CanBeClosed() 函数返回 FALSE,此选项卡将不显示 [x](关闭)按钮。但!如果选项卡附加了另一个可以关闭的选项卡,则两个选项卡的 [x] 按钮都将关闭,并且可以关闭两个选项卡。因此,如果您有“混合行为”选项卡,则不应将它们彼此附加。
    【解决方案2】:

    尝试在创建窗口时更改 dwControlBarStyle(使用 CDockablePane::Create)。

    【讨论】:

    • 我找到的唯一值是默认值,即 AFX_DEFAULT_DOCKING_PANE_STYLE ... 还有其他的吗?
    • AFX_DEFAULT_DOCKING_PANE_STYLE 是样式的组合(AFX_CBRS_FLOAT、AFX_CBRS_CLOSE、AFX_CBRS_RESIZE 和 AFX_CBRS_AUTOHIDE)。完整列表在 afxbasepane.h 中。只需将您想要的窗格样式“或”在一起即可。
    【解决方案3】:

    另一种解决方案是,只需调用

    CBasePane::SetControlBarStyle(AFX_CBRS_RESIZE|AFX_CBRS_CLOSE);
    

    【讨论】:

    • 您能否添加更多关于如何解决问题或在哪里拨打电话的背景信息?
    • 通过将控制栏样式设置为 AFX_CBRS_RESIZE 和 AFX_CBRS_CLOSE,您将省略 AFX_CBRS_FLOAT 样式,从而有效地删除样式,从而防止窗格浮动。
    猜你喜欢
    • 1970-01-01
    • 2022-12-25
    • 2012-01-05
    • 2016-07-27
    • 2013-04-09
    • 1970-01-01
    • 2017-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多