MFC控件編程:旋轉按鈕、進度條和滑塊控件

旋轉按鈕(微調按鈕) : 對應的控件類是CSpinButtonCtrl  

進度條:對應的控件類是CProgressCtrl

滑塊:對應的控件類是CSliderCtrl

對這三個控件的操作都是同過與之相關聯的控件類完成的,並且這三個控件有極大的相似性,故這裏放到一起

先認識下:

Spin:            Progress:             Slider:


常用函數:


   SetRange()/GetRange();        // 設置、獲取控件表示的範圍
   /* 設置控件的增量(步長) */
   CSpinButtonCtrl::SetAccel
   CProgressCtrl::SetStep
   CSlierCtrl::SetPageSize
   CSliderCtrl::SetLineSize

   SetPos()/GetPos();                    // 設置、獲取當前數值

另外:旋轉按鈕通常和編輯框一起使用,所以使用前需要設置兩者的夥伴關係。


使用案列程序:

   Spin控件和編輯框控件的關聯設置如下:  勾選:Auto buddy 和  Set buddy interger

   

 程序界面設置如下:

 

爲了方便操作控件:分別爲Progress、Slider、Spin控件關聯三個控件類型的變量:m_wndProgress、m_wndSlider、m_wndSpin

具體功能函數顯示如下:

/*************************************
   初始化控件函數
**************************************/
void CCtrl4Dlg::InitCtrl()
{
	// 設置控件的數值範圍
	m_wndSpin.SetRange (0, 100);
	m_wndProgress.SetRange (0, 100);
	m_wndSlider.SetRange (0, 100);

	// 設置控件的步長
	UDACCEL accel = {0};
	accel.nSec = 1;// 設置按住幾秒時間開始快輸增長
	accel.nInc = 1;// 增長率
	m_wndSpin.SetAccel (1, &accel);
    
	m_wndProgress.SetStep (10);
	m_wndSlider.SetLineSize (5); // 設置鼠標點擊和光標按鍵的增量
	m_wndSlider.SetPageSize (20);// 設置鍵盤翻頁按鍵的增量
    
	// 設置每個刻度的值,需要Slider控件勾選"Tic marks" 和 "Auto tics"樣式
        m_wndSlider.SetTicFreq (20);
}

/***********************************************************
   "增長"按鈕消息響應函數
************************************************************/
void CCtrl4Dlg::OnBtnAdd() 
{
	// TODO: Add your control notification handler code here
	// 進度條前進一個步長
	m_wndProgress.StepIt ();
	// 獲取進度條的當前位置
	int nPos = m_wndProgress.GetPos ();
	// 把獲取到的爲之設置給Slider和Spin
	m_wndSlider.SetPos (nPos);
	m_wndSpin.SetPos (nPos);	
}


/********************************************************************************
   Slider的NM_CUSTOMDRAW消息響應函數,當用戶拖動Slider時設置Progress和Spin的位置
*********************************************************************************/
void CCtrl4Dlg::OnCustomdrawSlider(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	// 獲取Slider的當前位置
	int nPos = m_wndSlider.GetPos ();
	// 把獲取到的爲之設置給Progress和Spin
	m_wndProgress.SetPos (nPos);
	m_wndSpin.SetPos (nPos);

	*pResult = 0;
}


Demo下載地址:點擊打開鏈接

   

 

發佈了93 篇原創文章 · 獲贊 67 · 訪問量 100萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章