#pragma once


// CSkinSliderCtrl
#include "SkinUI.h"
#include "ISkinControl.h"

class SKINUI_CLASS CSkinSliderCtrl : public CSliderCtrl,public ISkinControl
{
	DECLARE_DYNAMIC(CSkinSliderCtrl)
	
	//资源定义
public:
	CImageEx * m_pBackImg, * m_pThumImg, * m_pDisImg, * m_pBtImg, * m_pTraceImg;
	CImageEx * m_pAImg, * m_pBImg;

	//变量定义
protected:
	BOOL m_bPress, m_bHover, m_bMouseTracking;		//按钮状态
	bool					m_bDragging;			//拖放标识
	CRect					m_rcThumRect;			//滑块区域
	CRect					m_rcChannelRect;		//轨迹区域
	CSize					m_szThum;				//滑块大小
	BOOL					m_bLoopArrow;
	int m_nArrowLeftPos ;
	int m_nArrowRightPos;

	//函数定义
public:
	//构造函数
	CSkinSliderCtrl();
	//析构函数
	virtual ~CSkinSliderCtrl();

	//重载函数
protected:
	//设置属性
	virtual void SetAttribute(LPCTSTR pstrName, LPCTSTR pstrValue);
	//创建控件
	virtual BOOL CreateControl(CWnd* pParentWnd);

public:
	//设置资源
	BOOL SetBackImage(LPCTSTR lpszFileName,bool bFixed = true);
	//设置资源
	BOOL SetThumImage(LPCTSTR lpszFileName);
	//设置资源
	BOOL SetDisImage(LPCTSTR lpszFileName);
	//设置资源
	BOOL SetButtonImage(LPCTSTR lpszFileName);
	//设置资源
	BOOL SetTraceImage(LPCTSTR lpszFileName,CONST LPRECT lprcNinePart=NULL);
	BOOL SetArrowAImage( LPCTSTR lpszFileName );
	BOOL SetArrowBImage( LPCTSTR lpszFileName );

	//功能函数
public:
	//滑块位置
	void SetThumbRect(int nPos=0);
	//设置轨迹
	void SetChannelRect();
	//设置位置
	void SetPos(int nPos);
	void SetLeftArrowPos();
	void SetRightArrowPos();
	void StopLoopArrow();
	void StartLoopArrow();

	//消息映射
public:
	//鼠标离开
	afx_msg LRESULT OnMouseLeave(WPARAM wparam, LPARAM lparam);
	//绘制消息
	afx_msg void OnPaint();
	//窗口销毁
	afx_msg void OnDestroy();
	//鼠标移动
	afx_msg void OnMouseMove(UINT nFlags, CPoint point);
	//左键按下
	afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
	//左键抬起
	afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
	//背景重绘
	afx_msg BOOL OnEraseBkgnd(CDC* pDC);
	//窗口尺寸
	afx_msg void OnSize(UINT nType, int cx, int cy);

protected:
	DECLARE_MESSAGE_MAP()
};


