1. 程式人生 > >VC MFC滑塊(CSliderCtrl)控制元件

VC MFC滑塊(CSliderCtrl)控制元件

CSliderCtrl類裡相關函式解釋

void CSliderCtrl::SetRange( int nMin, int nMax, BOOL bRedraw = FALSE );//設定滑塊範圍,nMin最小值,nMax最大值

int CSliderCtrl::GetPos( ) const;//獲取滑塊位置

void CSliderCtrl::SetPos( int nPos );//設定滑塊位置

void CSliderCtrl::GetChannelRect( LPRECT lprc ) const;//獲取滑塊通道區域

void CSliderCtrl::GetThumbRect( LPRECT lprc ) const;//獲取滑柄區域

自繪滑塊控制元件

從CSliderCtrl類派生出子類CNewSliderCtrl,由於滑塊控制元件不像前幾個控制元件那樣複雜,所以自繪,就直接在WM_PAINT訊息處理函式中進行就行了,給CSliderCtrl新增WM_PAINT訊息處理函式,這裡我僅簡單的自繪一下。該函式程式碼如下:

void CNewSliderCtrl::OnPaint()
{
 CSliderCtrl::OnPaint();
    CDC *pDC=GetDC();
 CRect rect;
 this->GetChannelRect(rect);//獲取滑塊通道區域
 pDC->FillSolidRect(rect,RGB(255,0,0));


 this->GetThumbRect(rect);//獲取滑柄區域
 pDC->FillSolidRect(rect,RGB(0,255,0));
    this->ReleaseDC(pDC);
 // TODO: Add your message handler code here

 // Do not call CSliderCtrl::OnPaint() for painting messages
}

給滑塊控制元件關聯變數m_SliderCtrl,(型別:CNewCSliderCtrl),再往對話方塊新增一個編輯框控制元件用於顯示滑塊數值,關聯變數m_Number(控制元件型別),接著給滑塊控制元件新增NM_CUSTOMDRAW訊息處理函式,該函式用於實時設定編輯框的值,程式碼如下:

void CSeventhDlg::OnCustomdrawSlider1(NMHDR* pNMHDR, LRESULT* pResult)
{
 // TODO: Add your control notification handler code here
 int Number=m_SliderCtrl.GetPos();
 CString str;
 str.Format("%d",Number);
 m_Number.SetWindowText(str);
 *pResult = 0;
}

給對話方塊初始化函式新增語句:m_SliderCtrl.SetRange(0,100); 設定滑塊數值範圍

執行效果如下: