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); 設定滑塊數值範圍
執行效果如下: