具有CStatusBar的多行工具提示,并且始终处于激活状态

时间:2019-03-13 21:08:31

标签: mfc tooltip statusbar

我正在使用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 1\r\nLine2"));

当我显示工具提示时:

Tip

如您所见,它没有显示两行:

  

第1行

     

第2行

我已经对其进行了研究(例如here),但无济于事。

更新

使用略有不同的代码,仅保留一行提示信息:

Tip 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;
}

但是代码永远不会被调用。

更新

我已将此作为feature request提出给Microsoft。

0 个答案:

没有答案