MFC 如何启用状态栏的停靠?

MFC How to enable docking for a status bar?

我在 class CMainFrame : public CFrameWnd class 中创建了状态栏 CStatusBar statusBar; 我正在这样做:

if (!statusBar.CreateEx(this, TBSTYLE_AUTOSIZE, WS_CHILD | CBRS_TOP | WS_VISIBLE | CBRS_GRIPPER) ||
    !statusBar.LoadToolBar(IDR_TOOLBAR))
{
  return -1;
}

if (!statusBar.CreateEx(this, SBARS_TOOLTIPS, WS_CHILD | WS_VISIBLE | CBRS_BOTTOM | CBRS_GRIPPER))
{
  return -1;
}
statusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT));

// 然后尝试:

  statusBar.EnableDocking(CBRS_ALIGN_BOTTOM); // here I recieve an assertion

  EnableDocking(CBRS_ALIGN_BOTTOM);
  DockControlBar(&statusBar);

这里有什么问题(几乎相同的行为适用于工具栏)? 是否可以制作启用对接的状态栏?

我相信这是可能的,因为我在图片中有这个:

]1

UPD

这就是我在代码中的内容:

    if (!m_wndStatusBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_BOTTOM | CBRS_GRIPPER | CBRS_FLYBY | CBRS_SIZE_DYNAMIC))
    {
        TRACE0("Не удалось создать строку состояния\n");
        return -1;
    }
    m_wndStatusBar.SetIndicators(indicators, sizeof(indicators) / sizeof(UINT));

    // TODO: 
  m_wndStatusBar.EnableDocking(CBRS_ALIGN_ANY);
  EnableDocking(CBRS_ALIGN_ANY);
  DockControlBar(&m_wndStatusBar);

而且我仍然收到一个断言,该断言只有在我添加 DockControlBar(&m_wndStatusBar); 时才会变成。 没有这个也行不通,我认为这很正常 但为什么它不起作用?

您的状态栏创建了两次。第二次没有任何资源。删除第二个CreateEx,它应该没有问题。