如何动态更改 CMFCRibbonLabel 的文本
我的 CMDIFrameWndEx
派生主框架窗口使用 CMFCRibbonStatusBar
,我在其中添加了 CMFCRibbonLabel
。
我想在运行时更改此标签的文本:
m_pLabel->SetText(description);
m_pLabel->Redraw();
它只更新文本,但不更新绘制文本的矩形。 因此,如果原始文本太短,新字符串将不会完全可见。
如何让它正确调整大小?
My CMDIFrameWndEx
derived main frame window uses a CMFCRibbonStatusBar
to which I add a CMFCRibbonLabel
.
I'd like to change the text of this label at runtime:
m_pLabel->SetText(description);
m_pLabel->Redraw();
It only updates the text but not the rectangle in which to draw it. So if the original text was too short, the new string won't be visible completely.
How do I get it to resize correctly?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您不需要删除并重新添加。 只需这样称呼:
You don't need to remove and re-add. Just call this:
使用 CMFCRibbonStatusBarPane::SetAlmostLargeText 函数
use the CMFCRibbonStatusBarPane::SetAlmostLargeText function
再次回答我自己的问题...
我通过添加和删除标签而不是尝试更改文本来解决这个问题。
添加标签的代码:
请注意,我设置了一个 ID,以便稍后可以使用该 ID 调用
CMFCRibbonStatusBar::RemoveElement()
。需要调用
RecalcLayout()
和RedrawWindow()
才能使更改可见。去除标签的代码:
Answering my own question again...
I worked around the issue by adding and removing the label instead of trying to change the text.
Code for adding the label:
Note that I'm setting an ID so I can later call
CMFCRibbonStatusBar::RemoveElement()
with that ID.The calls to
RecalcLayout()
andRedrawWindow()
are needed to make the changes visible.Code for removing the label: