Visual c++ CFrameWndEx::AdjustDockingLayout()和CFrameWndEx::RecalcLayout()之间有什么区别?

Visual c++ CFrameWndEx::AdjustDockingLayout()和CFrameWndEx::RecalcLayout()之间有什么区别?,visual-c++,mfc,mfc-feature-pack,Visual C++,Mfc,Mfc Feature Pack,CFrameWndEx::AdjustDockingLayout()和CFrameWndEx::RecalcLayout()之间有什么区别 他们两人都可以完成类似的任务,如文档所示: 除此之外,他说 当您有调整停靠布局时,可以调用调整停靠布局或重新停靠布局,框架将此调用重定向到停靠管理器 AdjustDockingLayout()和RecalcLayout()是否执行相同的工作?AdjustDockingLayout比RecalcLayout低一级。RecalcLayout调用AdjustDoc

CFrameWndEx::AdjustDockingLayout()
CFrameWndEx::RecalcLayout()
之间有什么区别

他们两人都可以完成类似的任务,如文档所示:

除此之外,他说

当您有调整停靠布局时,可以调用调整停靠布局重新停靠布局,框架将此调用重定向到停靠管理器


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

AdjustDockingLayout比
RecalcLayout
低一级。
RecalcLayout
调用
AdjustDockingLayout
。但是,
AdjustDocinkgLayout
有一个用于延迟窗口定位(HDWP)的附加参数

因此,当启动程序或使用模式开关从注册表恢复windows布局时,
RecalcLayout
不会被调用。在这种情况下,调用
AdjustDockingLayout

因此,每当您在内部需要它时,我总是调用
RecalcLayout


详细说明:
recallayout
也为其每个子窗口调用
recallayout
,最后仅为当前窗口调用
AdjustDockingLayout

谢谢,但是recallayout在内部调用AdjustDockingLayout之前执行了哪些工作?如果我知道窗口正常放置且没有调整大小,调用AdjustDockingLayout()而不是RecalcLayout()是否安全;RecalcLayout进行一些计算,并为其所有子级调用RecalcLayout。AdjustLayout仅影响当前窗口。因此它只是调整当前窗口的内部元素的大小。再说一遍:我总是称之为RecalcLayoutSmall addition。对于CDockablePane,CPane和CBasePane虚拟方法RecalcLayout()不会被调用!只有框架调用了AdjustLayout()。所以,如果窗格包含子窗口和工具栏,则需要覆盖AdjustLayout()方法。