www.pudn.com > SkinSlider.zip > ZipSliderCtl.cpp


// MySliderCtl.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "ZipSliderCtl.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
#include "resource.h" 
 
///////////////////////////////////////////////////////////////////////////// 
// CZipSliderCtl 
 
CZipSliderCtl::CZipSliderCtl() 
{ 
	m_bDragging = FALSE; 
} 
 
CZipSliderCtl::~CZipSliderCtl() 
{ 
} 
 
 
BEGIN_MESSAGE_MAP(CZipSliderCtl, CSliderCtrl) 
	//{{AFX_MSG_MAP(CZipSliderCtl) 
	ON_WM_MOUSEMOVE() 
	ON_WM_PAINT() 
	ON_WM_TIMER() 
	ON_WM_LBUTTONDOWN() 
	ON_WM_LBUTTONUP() 
	ON_WM_KEYUP() 
	ON_WM_KEYDOWN() 
	//}}AFX_MSG_MAP 
	ON_WM_SETCURSOR() 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CZipSliderCtl message handlers 
 
void CZipSliderCtl::OnMouseMove(UINT nFlags, CPoint point)  
{ 
	if( m_bDragging ) 
		Invalidate(FALSE); 
	CSliderCtrl::OnMouseMove(nFlags, point); 
} 
 
 
void CZipSliderCtl::OnPaint()  
{ 
	CPaintDC dc(this); // device context for painting 
 
	int iMax,iMin,iTickWidth=10,iMarginWidth=10; 
	GetRange(iMin,iMax); 
	RECT rcBack,rcTick; 
	GetClientRect(&rcBack); 
	rcTick = rcBack; 
	TRACE("%d\n",GetPos()); 
	rcTick.left = ((rcBack.right-iMarginWidth)*(GetPos()))/((iMax - iMin)+iMarginWidth/2); 
	rcTick.right = rcTick.left + iTickWidth; 
 
	m_bmpBack->Draw(dc,0,0); 
	m_bmTrans->DrawTrans(dc,rcTick.left, -2); 
} 
 
void CZipSliderCtl::OnTimer(UINT nIDEvent)  
{ 
	//Invalidate(FALSE); 
	CSliderCtrl::OnTimer(nIDEvent); 
} 
 
void CZipSliderCtl::OnLButtonUp(UINT nFlags, CPoint point)  
{ 
	m_bDragging = FALSE; 
	Invalidate(FALSE); 
	CSliderCtrl::OnLButtonUp(nFlags, point); 
} 
 
void CZipSliderCtl::OnLButtonDown(UINT nFlags, CPoint point)  
{ 
	m_bDragging =TRUE; 
	Invalidate(FALSE); 
	CSliderCtrl::OnLButtonUp(nFlags, point); 
} 
 
void CZipSliderCtl::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags)  
{ 
//	Invalidate(FALSE); 
//	CSliderCtrl::OnKeyUp(nChar, nRepCnt, nFlags); 
} 
 
void CZipSliderCtl::SetRange(int nMin, int nMax, BOOL bRedraw) 
{ 
	CSliderCtrl::SetRange(nMin,nMax,bRedraw); 
	SetPos(nMin); 
} 
 
void CZipSliderCtl::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)  
{ 
	// TODO: Add your message handler code here and/or call default 
	 
//	CSliderCtrl::OnKeyDown(nChar, nRepCnt, nFlags); 
} 
 
void CZipSliderCtl::SetSkin(UINT uiBackGround, UINT uiTickImage,short nCursor) 
{ 
	m_hCursor = LoadCursor(AfxGetInstanceHandle(),MAKEINTRESOURCE(nCursor)); 
	m_bmpBack = new CZipBitmap(); 
	m_bmpBack->LoadBitmap(uiBackGround); 
 
	m_bmTrans = new CZipBitmap(); 
	m_bmTrans->LoadBitmap(uiTickImage); 
} 
 
BOOL CZipSliderCtl::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)  
{ 
	::SetCursor(m_hCursor); 
	return TRUE; 
}