【发布时间】:2009-01-22 13:19:52
【问题描述】:
有什么方法可以使停靠在无法浮动或隐藏的窗口中的 MFC DockablePane(来自新功能包)(甚至禁用允许用户选择状态的上下文菜单 - 可停靠,浮动,隐藏等)
我基本上想要的是在一个窗口上有 3 个窗格,可以改变它们的水平尺寸,但不能改变它们在窗口内的位置。有什么建议吗?
【问题讨论】:
有什么方法可以使停靠在无法浮动或隐藏的窗口中的 MFC DockablePane(来自新功能包)(甚至禁用允许用户选择状态的上下文菜单 - 可停靠,浮动,隐藏等)
我基本上想要的是在一个窗口上有 3 个窗格,可以改变它们的水平尺寸,但不能改变它们在窗口内的位置。有什么建议吗?
【问题讨论】:
解决方案是扩展 CDockablePane 并在此类中覆盖以下事件:
virtual BOOL CanFloat() const;
virtual BOOL CanBeClosed() const;
virtual BOOL CanAutoHide() const;
所以他们返回 FALSE;
【讨论】:
virtual BOOL CanBeAttached() const {return FALSE;} 奇怪的事情:如果您的 CanBeClosed() 函数返回 FALSE,此选项卡将不显示 [x](关闭)按钮。但!如果选项卡附加了另一个可以关闭的选项卡,则两个选项卡的 [x] 按钮都将关闭,并且可以关闭两个选项卡。因此,如果您有“混合行为”选项卡,则不应将它们彼此附加。
尝试在创建窗口时更改 dwControlBarStyle(使用 CDockablePane::Create)。
【讨论】:
另一种解决方案是,只需调用
CBasePane::SetControlBarStyle(AFX_CBRS_RESIZE|AFX_CBRS_CLOSE);
【讨论】: