MFC控制項編程:旋轉按鈕、進度條和滑塊控制項,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和Spinm_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和Spinm_wndProgress.SetPos (nPos);m_wndSpin.SetPos (nPos);*pResult = 0;}
Demo:點擊開啟連結
vc 中怎使用 滑塊控制項與進度條控制項
BOOL CDlgDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_pro.SetRange(0,100);
m_slider.SetRange(0,100);
...
}
void CDlgDlg::OnReleasedcaptureSlider1(NMHDR* pNMHDR, LRESULT* pResult)
{
int iPos = m_slider.GetPos();
m_pro.SetPos(iPos);
*pResult = 0;
}
MFC中的滑塊控制項怎隨進度條一起動?