У меня есть приложение на основе ленты MFC, которое включает три строки состояния, как показано ниже;
CString LongString;
LongString.Format("%0*lf", 60, 0.0);
m_pStatusWnd = new CMFCRibbonStatusBarPane(ID_STATUSBAR_PANE1, _T(""), TRUE,NULL, LongString);
m_pStatusCommand = new CMFCRibbonStatusBarPane(ID_INDICATOR_PROMPT, _T("Command"), TRUE, NULL, "000000000000000000000000000000");
m_pStatusSnap = new CMFCRibbonStatusBarPane(ID_INDICATOR_SNAP, _T("Snaps"), TRUE, NULL, "00000000000000000000");
ui.GetStatusBar().AddElement(m_pStatusWnd, "Status");
ui.GetStatusBar().AddExtendedElement(m_pStatusCommand, "Command");
ui.GetStatusBar().AddExtendedElement(m_pStatusSnap, "Snaps");
ui.GetStatusBar().RecalcLayout();
Две расширенные панели состояния в нижней правой части экрана имеют фиксированные размеры, но я бы хотел, чтобы левая панель состояния занимала оставшееся пространство до края кадра. Единственный метод, который я могу найти для установки ширины панели, - это метод SetAlmostLargeText
, который на самом деле не так полезен, поскольку значение будет варьироваться в зависимости от размера кадра. По результатам тестирования, если я даю слишком большое значение, панель состояния просто не отображает никакого содержимого. Точно так же, если я изменяю размер кадра и уменьшаю его, содержимое левой панели полностью теряется, когда оно оказывается ниже AlmostLargeTextSize
Есть ли метод расчета размера левого CMFCRibbonStatusBarPane
на основе доступного пространства кадра? Ближайшее, что я могу найти, - это CMFCRibbonBaseElement::GetSize
, из которого я мог бы вычислить максимально доступный размер текста при использовании в сочетании с показателями среднего размера шрифта, но это кажется довольно грубым.