滑桿控制項 是 Windows 應用程式中常見的數值輸入介面,由軌道、滑塊與可選刻度組成。MFC 封裝為 CSliderCtrl 類別,廣泛用於音量控制、顏色調整、進度設定等場景。本文以 VC6.0 為例,完整示範從建立專案到即時同步顯示數值的完整流程。
m_Slider,類型 CSliderCtrl。m_nValue。| 函數 | 用途 | 預設值 |
|---|---|---|
SetRange(nMin, nMax) | 設定數值範圍 | 0 ~ 100 |
SetPos(nPos) | 設定當前位置 | 0 |
SetLineSize(nSize) | 鍵盤方向鍵/點擊箭頭移動步長 | 1 |
SetPageSize(nSize) | PgUp/PgDown 移動步長 | 10 |
SetTicFreq(nFreq) | 刻度間距頻率 | 1 |
SetTic(nPos) | 在指定位置新增單一刻度 | - |
ClearTics() | 清除所有刻度 | - |
BOOL CMy601Dlg::OnInitDialog()
{
CDialog::OnInitDialog();
// ... 圖示、選單初始化略 ...
m_Slider.SetRange(-100, 100);
m_Slider.SetTicFreq(10); // 主刻度每 10
m_Slider.SetLineSize(1); // 微調步長 1
m_Slider.SetPageSize(10); // 大調步長 10
m_Slider.SetPos(0); // 初始置中
return TRUE;
}
雖然常用 NM_RELEASEDCAPTURE(滑鼠釋放)或 NM_HSCROLL(捲動),但 NM_CUSTOMDRAW 能在繪製階段捕捉最新位置,回應最即時。
void CMy601Dlg::OnCustomdrawSlider1(NMHDR* pNMHDR, LRESULT* pResult)
{
UpdateData(TRUE); // 從控制項讀取資料
m_nValue = m_Slider.GetPos(); // 取得當前滑桿位置
UpdateData(FALSE); // 更新至 Edit Control
*pResult = 0;
}
自繪外觀可處理 NM_CUSTOMDRAW 進階階段(CDDS_PREPAINT, CDDS_ITEMPREPAINT),自行繪製軌道、滑塊、刻度顏色與形狀。

拖動滑塊時,Edit Control 即時顯示 -100 到 100 之間的整數值。
CSliderCtrl 功能豐富且易於整合,掌握其屬性設定與通知訊息處理,即可快速構建直觀的數值輸入介面。本文代碼在 Windows 2000 / VC6.0 / VC++.NET 驗證通過。