2015-12-15 40 views
0

我创建了状态栏CStatusBar statusBar;在 的class CMainFrame : public CFrameWnd类,我这样做:MFC如何为状态栏启用对接?

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); 

什么是这里的错误(几乎相同的行为作品为工具栏)? 是否有可能使一个状态栏与启用对接?

我beelieve有可能因为我有这样的画面:

enter image description here] 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);。 没有这个是不行的,我认为这是正常的 但它为什么不起作用呢?

enter image description here

+0

哇,这是一个糟糕的编辑。你只是改变了你的问题100%。相反,*问一个新的问题!*。回滚到之前的编辑。 – crashmstr

+0

我想知道一个新的问题。但阻止它(:。 –

+0

也我找到了答案http://stackoverflow.com/questions/1896341/can-constructor-call-another-constructor-in-c 感谢回滚 –

回答

1

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