首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

MFC CToolTipCtrl 為 ComboBox 下拉項目動態顯示提示

     編輯:程式設計綜合問答

需求

ComboBox 下拉後,不同選項懸停滑鼠顯示不同 ToolTip。

實作步驟

  1. 建立 CToolTipCtrl m_tooltip 成員變數,於 OnInitDialog 初始化:
    m_tooltip.Create(this);
    m_tooltip.Activate(TRUE);
  2. 處理 CBN_SELCHANGE 或滑鼠移動訊息,動態更新工具提示:
    void CMyDlg::OnCbnSelchangeCombo() {
        int idx = m_combo.GetCurSel();
        if (idx != CB_ERR) {
            CString tip;
            // 根據 idx 取得對應提示文字
            tip = GetTipForIndex(idx); 
            // 關鍵:重新呼叫 AddTool 更新文字
            m_tooltip.AddTool(GetDlgItem(IDC_COMBO), tip);
        }
    }
  3. 或使用 TTM_UPDATETIPTEXT 訊息直接修改現有工具提示文字,避免重複註冊。

關鍵點

  • AddTool 可重複呼叫更新同一控制項的提示內容。
  • 若需針對下拉清單項目(非編輯框)顯示,需子類別化下拉清單視窗(CComboBox::GetComboBoxInfo 取得 hwndList)並為其加入 ToolTip。
  • 簡單需求可直接在 OnCbnSelchange 以 SetWindowText 更新狀態列,體驗更佳。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved