我的CMDIFrameWndEx
派生主框架窗口使用CMFCRibbonStatusBar
我添加了CMFCRibbonLabel
。
我想在运行时更改此标签的文本:
m_pLabel->SetText(description);
m_pLabel->Redraw();
它只更新文本,但不更新绘制它的矩形。因此,如果原始文本太短,则新字符串将不会完全可见。
如何让它正确调整大小?
您无需删除和重新添加。请致电:
m_wndStatusBar.ForceRecalcLayout();
使用CMFCRibbonStatusBarPane :: SetAlmostLargeText函数
再次回答我自己的问题......
我通过添加和删除标签而不是尝试更改文本来解决此问题。
CMFCRibbonLabel* pLabel = new CMFCRibbonLabel(description);
pLabel->SetID(ID_MYLABEL); // ID is 0 by default
m_wndStatusBar.AddDynamicElement(pLabel);
m_wndStatusBar.RecalcLayout();
m_wndStatusBar.RedrawWindow();
请注意,我正在设置ID,以便稍后我可以使用该ID调用CMFCRibbonStatusBar::RemoveElement()
。需要调用RecalcLayout()
和RedrawWindow()
才能使更改可见。
if(m_wndStatusBar.RemoveElement(ID_MYLABEL))
{
m_wndStatusBar.RecalcLayout();
m_wndStatusBar.RedrawWindow();
}