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