在运行时没有在CMFCToolbar中替换按钮

时间:2015-05-24 16:33:34

标签: visual-c++ mfc mfc-feature-pack

我在CMFCDesktopAlertDialog中使用CMFCToolbar,CMFCDesktopAlertDialog包含在CMFCDesktopAlertWnd中。最初我创建窗口并插入3个按钮。然后在某些动作上,我想将这些按钮更改为2或3个不同的按钮。我尝试使用CMFCToolbar :: RemoveAllButtons()&然后InsertButton()。但是,它没有用。调用RemoveAllButtons()时,将删除所有按钮,但不插入新按钮。

1 个答案:

答案 0 :(得分:1)

插入按钮后调用AdjustLayout后解决了这个问题。 代码如下。

void MyClass::ReplaceButtons()
{
    m_m_myMFCToolbar.RemoveAllButtons();

    if(condition1)
    {
        m_myMFCToolbar.InsertButton( CMFCToolBarButton(ID_BUTTON1, 0, _T("MyText1"), FALSE, TRUE ) );
        m_myMFCToolbar.InsertButton( CMFCToolBarButton(ID_BUTTON2, 1, _T("MyText2"), FALSE, TRUE ) );
    }
    else
    {
        m_myMFCToolbar.InsertButton( CMFCToolBarButton(ID_BUTTON3, 2, _T("MyText3"), FALSE, TRUE ) );
        m_myMFCToolbar.InsertButton( CMFCToolBarButton(ID_BUTTON4, 3, _T("MyText4"), FALSE, TRUE) );
    }

    m_myMFCToolbar.AdjustLayout();  // This was added to resolve the issue

    CSize sizeToolBar = m_myMFCToolbar.CalcFixedLayout( FALSE, TRUE );
    m_myMFCToolbar.SetWindowPos(NULL, 0, 0, sizeToolBar.cx, sizeToolBar.cy, SWP_NOACTIVATE | SWP_NOZORDER );
}