按钮在运行时未在 CMFCToolbar 中被替换

Buttons not getting replaced in CMFCToolbar at runtime

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

插入按钮后调用 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 );
}