1

派生CMDIFrameWndExしたメイン フレーム ウィンドウは、CMFCRibbonStatusBarを追加する を使用しCMFCRibbonLabelます。

実行時にこのラベルのテキストを変更したい:

m_pLabel->SetText(description);
m_pLabel->Redraw();

テキストのみを更新し、それを描画する四角形は更新しません。したがって、元のテキストが短すぎると、新しい文字列が完全に表示されません。

正しくサイズ変更するにはどうすればよいですか?

4

3 に答える 3

4

削除して再度追加する必要はありません。これを呼んでください:

m_wndStatusBar.ForceRecalcLayout();
于 2010-06-14T13:44:55.523 に答える
1

use the CMFCRibbonStatusBarPane::SetAlmostLargeText function

于 2009-08-26T18:40:03.087 に答える
0

もう一度自分の質問に答えます...

テキストを変更しようとするのではなく、ラベルを追加および削除することで問題を回避しました。

ラベルを追加するコード:

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();
}
于 2009-05-15T12:41:19.310 に答える