CFrameWndEx::AdjustDockingLayout() 和 CFrameWndEx::RecalcLayout() 有什么区别?

What is difference between CFrameWndEx::AdjustDockingLayout() and CFrameWndEx::RecalcLayout()?

CFrameWndEx::AdjustDockingLayout()CFrameWndEx::RecalcLayout() 有什么区别?

他们都执行与文档所述类似的任务:AdjustDockingLayout(), RecalcLayout()

除此之外,Interface Elements doc

You can call AdjustDockingLayout or RecalcLayout when you have to adjust the docking layout, and the framework redirects this call to the docking manager.

AdjustDockingLayout()RecalcLayout() 执行相同的工作吗?

AdjustDockingLayoutRecalcLayout低一级。 RecalcLayout 调用 AdjustDockingLayout。但是 AdjustDocinkgLayout 有一个额外的参数用于延迟 windows 定位(HDWP)。

因此,当您启动程序或进行模式切换时从注册表恢复 windows 的布局时,不会调用 RecalcLayout。在这种情况下 AdjustDockingLayout 被调用。

所以只要你在内部需要它,我总是会打电话给 RecalcLayout

详细说明:RecalcLayout 也为其每个子 windows 调用 RecalcLayout,最后只为当前的 window 调用 AdjustDockingLayout