MFC 單文檔/多文檔程序中,工具欄按鈕設置了 SetToolTipText() 或資源字符串包含 `\n` 提示文本,但鼠標懸停時**不顯示 ToolTip**,或僅顯示瞬間閃現。
CMainFrame::OnCreate() 中:if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT))) {
return -1;
}
CMainFrame::OnSetMessageString() 或確保 CFrameWnd::OnSetMessageString 正常調用(默認已實現)。IDR_MAINFRAME\n工具提示文本\n狀態欄文本(雙換行分隔)。// 字符串表資源
IDR_MAINFRAME "標題\n新建文件 (Ctrl+N)\n創建一個新文檔"
需自行實現:
1. 重寫 CToolBar::OnToolHitTest() 返回 TTN_NEEDTEXT 結構。
2. 或使用 CToolTipCtrl 子類化工具欄,手動 AddTool()、RelayEvent()。
不推薦:增加維護成本,違背 Windows UI 規範(用戶習慣看底部狀態欄)。
WS_VISIBLE | CBRS_BOTTOM)。ID_FILE_NEW) 與菜單項、字符串資源 ID 完全一致。CMainFrame 中誤重寫 OnSetMessageString 導致攔截。遵循 MFC 文檔/視圖架構設計意圖:**工具欄提示 → 狀態欄**,用戶體驗一致、代碼零成本。