我正在一个完全不希望使用window/dock
内置MFC
状态和位置保存的项目。这意味着在我的主框架中,我设置了EnableLoadDockState(FALSE)
。尽管我喜欢将其更改为TRUE,但我不能。
我计划通过CDockablePane
的onAfterDock()
定位CDockablePane
停靠的位置。我的问题是我不知道如何获取它是放在另一个CDockablePane
的侧面,顶部还是底部。
有没有办法获取此信息?
谢谢!
最佳答案
我认为有一种方法可以实现它,但是它不会变得简单或漂亮。
A您正在捕获OnAfterDock
,我想您对 float Pane 不感兴趣。因此,对于停靠的 Pane ,您可以使用CDockablePane::GetDefaultPaneDivider
(MSDN here),它返回-如MSDN所述:
CPaneDivider
对象(MSDN here)
以下部分屏幕截图显示了更多信息:
因此,对于常规的 Pane 分隔符,您可以使用CPaneDivider
上可用的方法来查找另一个 Pane 或另一个嵌入的CPaneDivider
(此处需要递归查询),并检查分隔符是水平的还是垂直的等。
对于上述其他情况,请查看CPaneContainerManager
类,该类(也是as MSDN says)
在这里,您可以再次从原始停靠 Pane 开始深入整个停靠层次结构。
如果您是我,我真的会真正地再次使用EnableLoadDockState
或至少浏览MFC源代码以查看是否有可重用的内部帮助程序类/函数。