Многострочная всплывающая подсказка с CStatusBar и всегда активирована

#mfc #tooltip #statusbar

#mfc #всплывающая подсказка #строка состояния

Вопрос:

Я использую элемент управления CStatusBar, и вот пример попытки настроить всплывающие подсказки:

 m_StatusBar.CreateEx(this, SBT_TOOLTIPS);
m_StatusBar.SetIndicators(indicators_oclm, paneCount); //We create the status bar

m_StatusBar.SetPaneInfo(paneDate, ID_INDICATOR_DATE, SBPS_NORMAL, 200);
m_StatusBar.SetPaneInfo(paneProgressOrZoomFactor, ID_INDICATOR_ZOOM, SBPS_NORMAL, 200);
m_StatusBar.SetPaneInfo(panePageBreaks, ID_INDICATOR_PAGE_BREAK, SBPS_NORMAL, 200);
m_StatusBar.SetPaneInfo(paneSlipsPerPage, ID_INDICATOR_SLIPS_COUNT, SBPS_NORMAL, 10);
m_StatusBar.SetPaneInfo(paneForeignLanguageGroup, ID_INDICATOR_FOREIGN_LANGUAGE_GROUP, SBPS_NORMAL, 200);
m_StatusBar.GetStatusBarCtrl().SetTipText(paneSlipsPerPage, _T("Line 1rnLine2"));
  

Когда я показываю всплывающую подсказку:

Подсказка

Как вы можете видеть, она не показала двух строк:

Строка 1

Строка 2

Я исследовал ее (пример здесь), но безрезультатно.

Обновить

Используя немного другой код, придерживаясь только одной строки для подсказки, которая у меня теперь есть:

Совет 2

Вы можете понять, почему я предпочитаю многострочную. Кроме того, я действительно хочу, чтобы текст на панели гласил «Календарь для использования», а подсказка содержала информацию. Но подсказки отображаются только в том случае, если весь текст не виден. Поэтому мне также нужно, чтобы она всегда была активирована, если это возможно.

Обновить

Я все еще не могу получить многострочную подсказку, но я придумал обходной путь для некоторых из них:

  1. Получаем ширину для «Используемых календарей»
  2. Установите ширину панели на это значение
  3. Обновите текст панели как «Календари для использования» (вызывает уведомление о всплывающей подсказке)
  4. Задайте текст подсказки

Значок на торте получает поддержку многострочности

Я пытался:

 static CToolTipCtrl* pToolTip = NULL;
CToolTipCtrl* ptt = AfxGetModuleState()->m_thread.GetDataNA()->m_pToolTip;
if (ptt != pToolTip) {
    // new tooltip
    ptt->SetMaxTipWidth(400);
    pToolTip = ptt;
}
  

Но код никогда не вызывается.

Обновить

Я поднял это как запрос функции в Microsoft.