/* * * ChartScrollBar.h * * Written by Cédric Moonen (cedric_moonen@hotmail.com) * * * * This code may be used for any non-commercial and commercial purposes in a compiled form. * The code may be redistributed as long as it remains unmodified and providing that the * author name and this disclaimer remain intact. The sources can be modified WITH the author * consent only. * * This code is provided without any garanties. I cannot be held responsible for the damage or * the loss of time it causes. Use it at your own risks * * An e-mail to notify me that you are using this code is appreciated also. * * */ #pragma once class CChartAxis; //! Class which manages the interaction with the axis scroll bar. /** This class is used internally by the CChartAxis class. **/ class CChartScrollBar : public CScrollBar { friend CChartAxis; public: //! Creates the scroll bar within a specified rectangle. void CreateScrollBar(const CRect& PlottingRect); //! Called on horizontal scrolling. void OnHScroll(UINT nSBCode, UINT nPos); //! Called on vertical scrolling. void OnVScroll(UINT nSBCode, UINT nPos); //! Refreshes the scroll bar position. void Refresh(); //! Enables/disables the scroll bar. void SetEnabled(bool bEnabled) { m_bEnabled = bEnabled; } //! Returns true if the scroll bar is enabled bool GetEnabled() const { return m_bEnabled; } //! Enables/disables the auto-hide mode. /** In auto-hide mode, the scroll bar is not visible unless the mouse is over the region of the scroll bar. **/ void SetAutoHide(bool bAutoHide) { m_bAutoHide = bAutoHide; } //! Returns true if the auto-hide mode is activated. bool GetAutoHide() const { return m_bAutoHide; } //! Called when the mouse enters the scroll bar area. void OnMouseEnter(); //! Called when the mouse leaves the scroll bar area. void OnMouseLeave(); private: //! Constructor CChartScrollBar(CChartAxis* pParentAxis); //! Destructor ~CChartScrollBar(); bool IsScrollInverted() const; void MoveAxisToPos(int PreviousPos, int CurPos); CChartAxis* m_pParentAxis; bool m_bEnabled; bool m_bAutoHide; };