我在CStatusBar statusBar;
课程中创建了状态栏class CMainFrame : public CFrameWnd
我这样做:
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);
时才会出现的断言。
如果没有这个也不行,我认为这是正常的
但为什么不与它合作呢?
答案 0 :(得分:2)
您的statusBar已创建两次。第二次没有任何资源。删除第二个CreateEx,它应该没有任何问题。