在VC中給Slider添加定製的Tooltips

來源:互聯網
上載者:User

    VC中的Slider的Tooltips只能顯示表示當前位置的int型值,可是有時候,這種Tooltips並不夠用。比如,在一個視頻錄製的小軟體中,可能會需要類似“總共500幀,當前是第13幀”的Tooltips;或者有些時候想在Tooltips中顯示float型的值。
     在這些時候我們就只能用CToolTipCtrl配合TTN_NEEDTEXT訊息來實現我們的定製Tooltips。
     下面用一個小例子來具體說明:

    首先,給Slider映射一個Control型變數,本例中為:    

CSliderCtrl m_slider;  //  ID為IDC_SLIDERTEST

     然後,添加CToolTipCtrl變數和相應TTN_NEEDTEXT的訊息函數:

CToolTipCtrl m_tooltips;

BOOL OnToolTipNotify(UINT id, NMHDR * pNMHDR, LRESULT * pResult);

     在cpp檔案的訊息映射中加入以下代碼:

ON_NOTIFY_EX(TTN_NEEDTEXT, 0, OnToolTipNotify)

    在初始化函數中,添加以下代碼:

m_slider.SetRange(0, 500, TRUE);
m_slider.SetPos(0);

//  建立Tooltips
m_tooltips.Create(GetDlgItem(IDC_SLIDERTEST));
m_tooltips.Activate(TRUE);

     在OnHScroll函數中添加:

if (pScrollBar == (CScrollBar*)GetDlgItem(IDC_SLIDERTEST))
    m_tooltips.Update();  //  更新Tooltips,會觸發TTN_NEEDTEXT訊息

    下面是實現定製Tooltips的函數,也就是相應TTN_NEEDTEXT的訊息函數:

BOOL OnToolTipNotify(UINT id, NMHDR * pNMHDR, LRESULT * pResult)
{
    TOOLTIPTEXT *pTTT = (TOOLTIPTEXT *)pNMHDR;
    UINT nID =pNMHDR->idFrom;
    if (pTTT->uFlags & TTF_IDISHWND)
    {
          // idFrom is actually the HWND of the tool
          nID = ::GetDlgCtrlID((HWND)nID);
          if(nID)
          {
               //  這裡就是你要顯示的Tooltips,可以根據需要來定製
               CString strToolTips;
               strToolTips.Format("總共500幀,當前是第%d幀", m_slider.GetPos());
   
               strcpy(pTTT->lpszText, strToolTips);
               pTTT->hinst = NULL;
               return(TRUE);
           }
    }

    return(FALSE);
}

    這種方法不僅僅可以實現Slider的定製Tooltips,其他控制項也可以用這個方法來實現。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.