私は、動的にCMFCRibbonLabelのテキストを変更するにはどうすればよいです
-
21-08-2019 - |
質問
私のCMDIFrameWndEx
派生メインフレームウィンドウは、私がCMFCRibbonStatusBar
を追加するCMFCRibbonLabel
を使用します。
私は、実行時にこのラベルのテキストを変更したいと思います:
m_pLabel->SetText(description);
m_pLabel->Redraw();
これは、テキストだけではなく、それを描画する矩形を更新します。オリジナルのテキストが短すぎたのであれば、新しい文字列が完全に表示されません。
どのように私はそれが正しくサイズを変更するのですか?
解決 3
再び自分の質問に答える...
私は追加と削除のラベルを代わりのテキストを変更しようとすることで問題を回避働いています。
ラベルを追加するためのコード:
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でCMFCRibbonStatusBar::RemoveElement()
を呼び出すことができるIDを設定していますので注意してください。
RecalcLayout()
とRedrawWindow()
への呼び出しは、変更が見えるようにする必要がある。
コード:
if(m_wndStatusBar.RemoveElement(ID_MYLABEL))
{
m_wndStatusBar.RecalcLayout();
m_wndStatusBar.RedrawWindow();
}
他のヒント
あなたは削除し、再度追加する必要はありません。ただ、これを呼び出します:
m_wndStatusBar.ForceRecalcLayout();
CMFCRibbonStatusBarPane :: SetAlmostLargeText機能を使用
所属していません StackOverflow