运行时 CMFCToolbar 中的按钮没有被替换
Posted
技术标签:
【中文标题】运行时 CMFCToolbar 中的按钮没有被替换【英文标题】:Buttons not getting replaced in CMFCToolbar at runtime 【发布时间】:2015-05-24 16:33:34 【问题描述】:我在 CMFCDesktopAlertDialog 中使用 CMFCToolbar,该对话框包含在 CMFCDesktopAlertWnd 中。最初我创建窗口并插入 3 个按钮。然后在某些操作中,我想将这些按钮更改为 2 或 3 个不同的按钮。我尝试使用 CMFCToolbar::RemoveAllButtons() & 然后 InsertButton()。但是,它没有用。调用 RemoveAllButtons() 时,所有按钮都会被移除,但不会插入新按钮。
【问题讨论】:
如果您的代码没有显示所需的行为,如果您提供该代码会有所帮助,最好是Minimal, Complete, and Verifiable example。 【参考方案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 );
【讨论】:
以上是关于运行时 CMFCToolbar 中的按钮没有被替换的主要内容,如果未能解决你的问题,请参考以下文章
mfc中的CMFCToolBar类怎么实现工具栏上的按钮多行显示??急!!!
如何将选项检查菜单添加到 CMFCToolBar 以允许同时进行多项检查