MFC DockablePane 不浮动或隐藏
Posted
技术标签:
【中文标题】MFC DockablePane 不浮动或隐藏【英文标题】:MFC DockablePane not floating or hiding 【发布时间】:2009-01-22 13:19:52 【问题描述】:有什么方法可以使停靠在无法浮动或隐藏的窗口中的 MFC DockablePane(来自新功能包)(甚至禁用允许用户选择状态的上下文菜单 - 可停靠,浮动,隐藏等)
我基本上想要的是在一个窗口上有 3 个窗格,可以改变它们的水平尺寸,但不能改变它们在窗口内的位置。有什么建议吗?
【问题讨论】:
【参考方案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 样式,从而有效地删除样式,从而防止窗格浮动。以上是关于MFC DockablePane 不浮动或隐藏的主要内容,如果未能解决你的问题,请参考以下文章