【问题标题】:Buttons not getting replaced in CMFCToolbar at runtime运行时 CMFCToolbar 中的按钮没有被替换
【发布时间】:2015-05-24 16:33:34
【问题描述】:

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

【问题讨论】:

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


【解决方案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 );
}

【讨论】:

    猜你喜欢
    • 2018-02-05
    • 1970-01-01
    • 1970-01-01
    • 2012-10-15
    • 1970-01-01
    • 2010-10-12
    • 2014-08-15
    • 2021-08-05
    • 1970-01-01
    相关资源
    最近更新 更多