質問

私の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機能を使用

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top