www.pudn.com > VolumeBar.rar > BitmapSlider.h


#if !defined(AFX_BITMAPSLIDER_H__BED36788_B60C_4C9E_AC56_FE430B93A0FD__INCLUDED_) 
#define AFX_BITMAPSLIDER_H__BED36788_B60C_4C9E_AC56_FE430B93A0FD__INCLUDED_ 
 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
// BitmapSlider.h : header file 
// 
 
///////////////////////////////////////////////////////////////////////////// 
// 
// CBitmapSlider v1.5 
// 
// It's free for everywhere - 16/September/2003 - Joon-ho Ryu 
// 
///////////////////////////////////////////////////////////////////////////// 
 
#include "memdc.h" // "Flicker Free Drawing In MFC" by Keith Rule 
 
#define WM_BITMAPSLIDER_MOVING		WM_USER + 9425 
#define WM_BITMAPSLIDER_MOVED		WM_USER + 9426 
 
class CBitmapSlider : public CStatic 
{ 
// Construction 
public: 
	CBitmapSlider(); 
 
// Attributes 
public: 
 
// Operations 
public: 
 
// Overrides 
	// ClassWizard generated virtual function overrides 
	//{{AFX_VIRTUAL(CBitmapSlider) 
	//}}AFX_VIRTUAL 
 
// Implementation 
public: 
 
	void GetRange( int &nMin, int &nMax ) { nMin = m_nMin; nMax = m_nMax; }; 
	int GetRangeMax() { return m_nMax; }; 
	int GetRangeMin() { return m_nMin; }; 
 
	int GetPos() { return m_nPos; }; 
 
	void SetRange( int nMin, int nMax, BOOL bRedraw=FALSE ); 
	void SetRangeMin(int nMin, BOOL bRedraw = FALSE); 
	void SetRangeMax( int nMax, BOOL bRedraw = FALSE ); 
 
	void SetPos( int nPos ); 
	int SetPageSize( int nSize ); 
 
	BOOL SetBitmapChannel( 
		UINT nChannelID, UINT nActiveID=NULL, BOOL bTransparent=FALSE, 
		COLORREF clrpTransColor=0xFF000000, int iTransPixelX=0, int iTransPixelY=0 ); 
 
	BOOL SetBitmapThumb( 
		UINT nThumbID, UINT nActiveID=NULL, BOOL bTransparent=FALSE, 
		COLORREF clrpTransColor=0xFF000000, int iTransPixelX=0, int iTransPixelY=0 ); 
 
	void SetMargin( int nLeft, int nTop, int nRight, int nBottom ); 
	void SetMarginTop( int nMargin ) { m_nMarginTop = nMargin; }; 
	void SetMarginLeft( int nMargin ) { m_nMarginLeft = nMargin; }; 
	void SetMarginRight( int nMargin ) { m_nMarginRight = nMargin; }; 
	void SetMarginBottom( int nMargin ) { m_nMarginBottom = nMargin; }; 
 
	void SetVertical( BOOL bVertical=TRUE ) { m_bVertical = bVertical; }; 
 
	void Enable( BOOL bEnable = TRUE ); 
 
	void DrawFocusRect( BOOL bDraw = TRUE, BOOL bRedraw = FALSE ); 
 
	virtual ~CBitmapSlider(); 
 
	// Generated message map functions 
protected: 
	void RestoreBackground( 
		CDC *pDC, int nXDst, int nYDst, int nWidth, int nHeight, CBitmap *pBmSrc); 
 
	void CopyBackground( 
		CDC *pDC, int nXSrc, int nYSrc, int nWidth, int nHeight, CBitmap *pBmDst ); 
 
	void DrawBitmap( 
		CDC* pDC, int xStart, int yStart, int wWidth, int wHeight, 
		CDC* pTmpDC, int xSource, int ySource, 
		CBitmap *bmMask = NULL, BOOL bTransparent = FALSE ); 
 
 
	void DrawTransparentBitmap( 
		CDC* pDC, int xStart, int yStart, int wWidth, int wHeight, 
		CDC* pTmpDC, int xSource, int ySource, CBitmap *bmMask ); 
 
	void PrepareMask( 
		CBitmap* pBmpSource, CBitmap* pBmpMask, 
		COLORREF clrpTransColor=0xFF000000, int iTransPixelX=0, int iTransPixelY=0 ); 
 
	int Pixel2Pos( int nPixel ); 
	int Pos2Pixel( int nPos ); 
 
	int m_nMax, m_nMin, m_nPos, m_nPage; 
 
	CRect m_rect; 
	int m_nWidth, m_nHeight; 
	int m_nThumbWidth, m_nThumbHeight; 
	int m_nMarginLeft, m_nMarginRight, m_nMarginTop, m_nMarginBottom; 
	int m_nThumbBgX, m_nThumbBgY; 
	int m_nMouseOffset; 
 
	BOOL m_bVertical; 
	BOOL m_bChannelActive, m_bThumbActive; 
	BOOL m_bTransparentChannel, m_bTransparentThumb, m_bThumb, m_bChannel; 
	BOOL m_bLButtonDown, m_bFocus, m_bFocusRect, m_bDrawFocusRect; 
	BOOL m_bEnable; 
 
	CBitmap m_bmChannel, m_bmChannelMask, m_bmChannelActive, m_bmChannelActiveMask; 
	CBitmap m_bmThumb, m_bmThumbMask, m_bmThumbActive, m_bmThumbActiveMask, m_bmThumbBg; 
 
	//{{AFX_MSG(CBitmapSlider) 
	afx_msg BOOL OnEraseBkgnd(CDC* pDC); 
	afx_msg void OnPaint(); 
	afx_msg void OnLButtonDown(UINT nFlags, CPoint point); 
	afx_msg void OnMouseMove(UINT nFlags, CPoint point); 
	afx_msg void OnLButtonUp(UINT nFlags, CPoint point); 
	afx_msg UINT OnGetDlgCode(); 
	afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags); 
	afx_msg void OnKillFocus(CWnd* pNewWnd); 
	afx_msg void OnSetFocus(CWnd* pOldWnd); 
	afx_msg void OnDestroy(); 
	//}}AFX_MSG 
 
	DECLARE_MESSAGE_MAP() 
private: 
	// This is CStatic method 
	void SetBitmap( HBITMAP hBitmap ) {}; 
}; 
 
///////////////////////////////////////////////////////////////////////////// 
 
//{{AFX_INSERT_LOCATION}} 
// Microsoft Visual C++ will insert additional declarations immediately before the previous line. 
 
#endif // !defined(AFX_BITMAPSLIDER_H__BED36788_B60C_4C9E_AC56_FE430B93A0FD__INCLUDED_)