我正在一个完全不希望使用window/dock内置MFC状态和位置保存的项目。这意味着在我的主框架中,我设置了EnableLoadDockState(FALSE)。尽管我喜欢将其更改为TRUE,但我不能。

我计划通过CDockablePaneonAfterDock()定位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源代码以查看是否有可重用的内部帮助程序类/函数。

09-10 04:33
查看更多