2015-05-24 13 views
1

我在包含在CMFCDesktopAlertWnd中的CMFCDesktopAlertDialog中使用CMFCToolbar。最初我創建窗口並插入3個按鈕。然後在某些操作中,我想將這些按鈕更改爲2或3個不同的按鈕。我嘗試使用CMFCToolbar :: RemoveAllButtons()&,然後InsertButton()。但是,它沒有工作。 RemoveAllButtons()被調用時,所有的按鈕被刪除,但是新的按鈕沒有被插入。在運行時CMFCToolbar中沒有被替換的按鈕

+0

如果你的代碼沒有顯示所需的行爲,它幫助,如果你提供的代碼,理想情況下[最小,完整,可驗證的示例](http://stackoverflow.com/help/mcve)。 – IInspectable

回答

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); 
}