首页 > 解决方案 > 如何知道工具栏的停靠状态何时发生变化

问题描述

有人问过类似的问题@Detecting when a CControlBar's docking state has changed,但答案是站在控件的角度写的。我想知道停靠状态何时从 CFrameWnd 发生变化,因为我有一个填充客户区的窗口,每当停靠状态发生变化时都需要重新定位该窗口。我当前的 WM_SIZE 代码有效,但如果工具栏停靠或取消停靠,则无效。

标签: winapivisual-c++mfc

解决方案


您可以覆盖AdjustDockingLayout. CFrameWndEx每次更改停靠布局时都会调用它。

MSDN 信息:

注意:在创建停靠窗口期间,会多次调用此函数(您可能希望忽略它们)。

void CMainFrame::AdjustDockingLayout(HDWP hdwp)
{
    CMDIFrameWndEx::AdjustDockingLayout(hdwp);

    // do some calulations
}

推荐阅读