滑塊控制項SLIDER的應用與訊息

來源:互聯網
上載者:User

 寫程式正好用到SLIDER控制項,隨把心得發表出來以供分享。

 

一、應用

 

 

CTestDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)<br />{<br />// TODO: Add your message handler code here and/or call default<br /> CSliderCtrl *pSlidCtrl=(CSliderCtrl*)GetDlgItem(IDC_SLIDER1);<br /> int m_nCur=pSlidCtrl->GetPos();<br /> CString str;<br /> str.Format("%d/n",m_nCur);<br /> TRACE(str);</p><p> CDialog::OnHScroll(nSBCode,nPos,pScrollBar);<br />}<br />

 

【MFC 中】關於對話方塊中的OnVScroll() 和 OnHScroll()函數
所以,要想對滑塊有效控制,就要對這兩個函數(改寫對話方塊的這兩個函數)進行控制。

如:
///////////////////////////////////////////////////////////////////////////////////////////////////<br />// 水平移動<br />///////////////////////////////////////////////////////////////////////////////////////////////////<br />void CTestDialog::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)<br />{<br /> // TODO: 在此添加訊息處理常式代碼和/或調用預設值<br /> //Slider<br /> CSliderCtrl* pSlider = (CSliderCtrl*)pScrollBar;<br /> CString strText;</p><p> int dValue[10] = {0};<br /> //多個SLIDER控制項控制<br /> switch( pSlider->GetDlgCtrlID() )<br /> {<br /> //Slider1<br /> case IDC_SLIDER1:<br /> strText.Format( _T("%d"), pSlider->GetPos() );<br /> SetDlgItemText( IDC_STATIC_SLIDER1, strText );<br /> break;<br /> //Slider2<br /> case IDC_SLIDER2:<br /> strText.Format( _T("%3.1f"), dValue[pSlider->GetPos()] );<br /> SetDlgItemText( IDC_STATIC_SLIDER2, strText );<br /> break;<br /> //dValue[6] = {1.5, 3.0, 4.5, 6.0, 7.5, 8.0};<br /> }<br /> CDialog::OnHScroll(nSBCode, nPos, pScrollBar);<br /> }</p><p>///////////////////////////////////////////////////////////////////////////////////////////////////<br />// 垂直滾動<br />///////////////////////////////////////////////////////////////////////////////////////////////////<br /> void CTestDialog::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)<br /> {<br /> // TODO: 在此添加訊息處理常式代碼和/或調用預設值<br /> if( nSBCode == SB_ENDSCROLL )<br /> {<br /> return;<br /> }<br /> //Spin Button<br /> if( pScrollBar->GetDlgCtrlID() == IDC_SPIN1 )<br /> {<br /> CString strValue;<br /> strValue.Format( _T("%3.1f"), (double)nPos / 10.0 );<br /> //((CSpinButtonCtrl*)pScrollBar)->GetBuddy()->SetWindowTextW( strValue );<br /> CEdit* pEdit =(CEdit*) ((CSpinButtonCtrl*)pScrollBar)->GetBuddy();<br /> pEdit->SetWindowTextW( strValue );<br /> }</p><p> CDialog::OnVScroll(nSBCode, nPos, pScrollBar);<br /> }<br />

 

 

 

二、滑塊通知訊息

Visual C++ 概念:添加功能滑塊通知訊息

滑塊控制項 (Slider Control) 通過向父視窗發送 WM_HSCROLLWM_VSCROLL 訊息(取決於滑塊控制項 (Slider Control) 的方向),將使用者操作通知其父視窗。若要處理這些訊息,請將 WM_HSCROLLWM_VSCROLL 訊息的處理常式添加到父視窗。將向 OnHScroll 和 OnVScroll 成員函數傳遞通知代碼、滑塊的位置和指向 CSliderCtrl 對象的指標。注意指標的類型為 CScrollBar *,即使它指向 CSliderCtrl 對象。若要操作滑塊控制項 (Slider Control),可能需要轉換該指標的類型。

 

滑塊控制項 (Slider Control) 不是使用捲軸通知代碼,而是發送不同的通知代碼集。只有當使用者使用鍵盤與滑塊控制項 (Slider Control) 互動時,滑塊控制項 (Slider Control) 才發送 TB_BOTTOMTB_LINEDOWNTB_LINEUPTB_TOP 通知代碼。只有當使用者使用滑鼠時才發送 TB_THUMBPOSITIONTB_THUMBTRACK 通知訊息。在兩種情況下都發送 TB_ENDTRACKTB_PAGEDOWNTB_PAGEUP 通知代碼。

下表列出了滑塊控制項 (Slider Control) 通知訊息和導致發送通知的事件(虛鍵控代碼和滑鼠事件)。(有關標準虛鍵控代碼的列表,請參見 Winuser.h。)

通知訊息 導致發送通知的事件
TB_BOTTOM VK_END
TB_ENDTRACK WM_KEYUP(使用者釋放了發送相關虛鍵控代碼的鍵)
TB_LINEDOWN VK_RIGHTVK_DOWN
TB_LINEUP VK_LEFTVK_UP
TB_PAGEDOWN VK_NEXT(使用者單擊了滑塊下面或右邊的通道)
TB_PAGEUP VK_PRIOR(使用者單擊了滑塊上面或左邊的通道)
TB_THUMBPOSITION WM_LBUTTONUPTB_THUMBTRACK 通知訊息之後
TB_THUMBTRACK 滑塊移動(使用者拖動了滑塊)
TB_TOP VK_HOME

範例代碼://控制垂直捲軸移動 HWND hWnd = GetDlgItem(IDC_SLIDER1)->GetSafeHwnd();
 ::SendMessage(hWnd,WM_SETFOCUS,0,0);
 ::SendMessage(hWnd,WM_KEYDOWN,VK_UP,1);
 ::SendMessage(hWnd,WM_VSCROLL,TB_LINEUP,0);

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.