首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> 關於VC++

VC++ 滑桿控制項(CSliderCtrl)完整應用指南:從屬性設定到即時數值顯示

     編輯:關於VC++

前言

滑桿控制項 是 Windows 應用程式中常見的數值輸入介面,由軌道、滑塊與可選刻度組成。MFC 封裝為 CSliderCtrl 類別,廣泛用於音量控制、顏色調整、進度設定等場景。本文以 VC6.0 為例,完整示範從建立專案到即時同步顯示數值的完整流程。

一、建立專案與介面佈局

  1. 新建「MFC AppWizard (exe)」專案,選擇「Dialog based」。
  2. 在對話框編輯器中放置一個 Edit Control(用於顯示數值)與一個 Slider Control。
  3. 右鍵 Slider Control 選擇「Add Variable」,類別變數命名為 m_Slider,類型 CSliderCtrl。
  4. 為 Edit Control 建立整數型變數 m_nValue。

二、滑桿核心屬性設定(於 OnInitDialog 中)

函數用途預設值
SetRange(nMin, nMax)設定數值範圍0 ~ 100
SetPos(nPos)設定當前位置0
SetLineSize(nSize)鍵盤方向鍵/點擊箭頭移動步長1
SetPageSize(nSize)PgUp/PgDown 移動步長10
SetTicFreq(nFreq)刻度間距頻率1
SetTic(nPos)在指定位置新增單一刻度-
ClearTics()清除所有刻度-

範例:設定範圍 -100 ~ 100,每 10 單位一大刻度

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_CUSTOMDRAW 通知

雖然常用 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;
}

四、進階樣式與外觀客製化

  • TBS_VERT:垂直方向滑桿。
  • TBS_BOTH:兩側皆顯示刻度。
  • TBS_NOTICKS:隱藏刻度。
  • TBS_TOOLTIPS:滑鼠懸停顯示當前數值提示(需佈建 ToolTip 控制項)。

自繪外觀可處理 NM_CUSTOMDRAW 進階階段(CDDS_PREPAINT, CDDS_ITEMPREPAINT),自行繪製軌道、滑塊、刻度顏色與形狀。

五、執行結果

滑桿控制項執行畫面

拖動滑塊時,Edit Control 即時顯示 -100 到 100 之間的整數值。

結語

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

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved