1.如何控制slider:
應用程式可以調用滑塊控制項 (Slider Control) 的成員函數來檢索有關滑塊控制項 (Slider Control) (CSliderCtrl) 的資訊並更改它的特徵。
若要檢索滑塊的位置(即,使用者已選擇的值),請使用(GetPos 成員函數。若要設定滑塊的位置,請使用
SetPos 成員函數。在任何時候都可以用
VerifyPos 成員函數來確保滑塊位於最小值和最大值之間。
滑塊控制項 (Slider Control) 的範圍為滑塊控制項 (Slider Control) 能夠表示的連續數值集。第一次建立滑塊控制項 (Slider Control) 後,大多數應用程式用
SetRange 成員函數設定滑塊控制項 (Slider Control) 的範圍。在用
SetRangeMax 和 SetRangeMin 成員函數建立滑塊控制項 (Slider Control) 後,應用程式可以動態改變滑塊控制項 (Slider Control) 的範圍。允許動態更改範圍的應用程式一般在使用者處理完滑塊控制項 (Slider Control) 後檢索最後的範圍設定。若要檢索這些設定,請使用
GetRange、GetRangeMax 和
GetRangeMin 成員函數。
m_SliderA.SetRange(0, 255);m_SliderB.SetRange(0,255);m_nPosA = 120;m_nPosB=255;UpdateData(FALSE);
2 如何用響應slider的改變:
滑塊控制項 (Slider Control) 通過向父視窗發送 WM_HSCROLL 或 WM_VSCROLL 訊息(取決於滑塊控制項 (Slider Control) 的方向),將使用者操作通知其父視窗。若要處理這些訊息,請將
WM_HSCROLL 和 WM_VSCROLL 訊息的處理常式添加到父視窗。將向
OnHScroll 和 OnVScroll 成員函數傳遞通知代碼、滑塊的位置和指向
CSliderCtrl 對象的指標。注意指標的類型為 CScrollBar *,即使它指向
CSliderCtrl 對象。若要操作滑塊控制項 (Slider Control),可能需要轉換該指標的類型。
滑塊控制項 (Slider Control) 不是使用捲軸通知代碼,而是發送不同的通知代碼集。只有當使用者使用鍵盤與滑塊控制項 (Slider Control) 互動時,滑塊控制項 (Slider Control) 才發送
TB_BOTTOM、TB_LINEDOWN、TB_LINEUP 和
TB_TOP 通知代碼。只有當使用者使用滑鼠時才發送 TB_THUMBPOSITION 和
TB_THUMBTRACK 通知訊息。在兩種情況下都發送 TB_ENDTRACK、TB_PAGEDOWN 和
TB_PAGEUP 通知代碼。
下表列出了滑塊控制項 (Slider Control) 通知訊息和導致發送通知的事件(虛鍵控代碼和滑鼠事件)。(有關標準虛鍵控代碼的列表,請參見 Winuser.h。)
| 通知訊息 |
導致發送通知的事件 |
| TB_BOTTOM |
VK_END |
| TB_ENDTRACK |
WM_KEYUP(使用者釋放了發送相關虛鍵控代碼的鍵) |
| TB_LINEDOWN |
VK_RIGHT 或 VK_DOWN |
| TB_LINEUP |
VK_LEFT 或 VK_UP |
| TB_PAGEDOWN |
VK_NEXT(使用者單擊了滑塊下面或右邊的通道) |
| TB_PAGEUP |
VK_PRIOR(使用者單擊了滑塊上面或左邊的通道) |
| TB_THUMBPOSITION |
WM_LBUTTONUP 在 TB_THUMBTRACK 通知訊息之後 |
| TB_THUMBTRACK |
滑塊移動(使用者拖動了滑塊) |
| TB_TOP |
VK_HOME |
執行個體如下:
void CThresholdDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar){ UpdateData(TRUE);
if (pScrollBar == GetDlgItem(IDC_SLIDERA)) //擷取slider的指標; m_nA = m_nPosA; //改變編輯框A的數值; else m_nB = m_nPosB; //改變編輯框B的數值; //refresh(); UpdateData(FALSE); refresh();
CDialog::OnHScroll(nSBCode, nPos, pScrollBar);}