一:
我们通过继承MFC自带的CSliderCtrl,并且重写一个OnPaint函数。当然其实也可以通过继承CStatic去模拟CSliderCtrl来实现自绘。自绘难度并不大。国际惯例,上代码。
二:
h 头文件
class CSkinSliderCtrl : public CSliderCtrl
{
DECLARE_DYNAMIC(CSkinSliderCtrl)
public:
CSkinSliderCtrl();
virtual ~CSkinSliderCtrl();
void SetImage(CString strBkImage, CString strThumb);
protected:
DECLARE_MESSAGE_MAP()
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
afx_msg void OnPaint();
afx_msg LRESULT OnMouseLeave(WPARAM wparam, LPARAM lparam);
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
private:
void DrawChannel(CDC *pDC, LPNMCUSTOMDRAW lpcd);
void DrawThumb(CDC *pDC, LPNMCUSTOMDRAW lpcd);
CRect GetStateRect(int nThumb);
private:
BOOL m_bTracking;
BOOL m_bThumb;
CImage m_imBg;
CImage m_imThumb;
};
cpp源文件