00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 #ifndef _RM_MFC_UTILITIES_SLIDER_EDIT_H_
00037 #define _RM_MFC_UTILITIES_SLIDER_EDIT_H_
00038
00039 #include <MFCUtilities/RmMFCTypes.h>
00040 #include <MFCUtilities/RmMFCNumericEdit.h>
00041 #include <MFCUtilities/RmMFCSliderEdit.h>
00042
00043
00044 class CPopupSlider;
00045
00046 enum MouseButtonState
00047 {
00048 BUTTON_UP = 0,
00049 BUTTON_DOWN = 1,
00050 BUTTON_DISABLED = 2
00051 };
00052
00053 #define NUM_SLIDER_NOTCHES 300
00054
00055
00056 #define MIN_NUM_EDIT -100.0f
00057 #define MAX_NUM_EDIT 100.0f
00058
00059 class RMMFCUTIL_API CRmSliderEdit: public CRmNumericEdit
00060 {
00061
00062 public:
00063
00064
00065 CRmSliderEdit();
00066 virtual ~CRmSliderEdit() {};
00067
00068
00069 virtual BOOL Create( BOOL bAlign, DWORD dwExStyle, LPCTSTR lpszWindowName,
00070 DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
00071
00072
00073 void Init( CWnd* pParent, float fValue, float fMin = MIN_NUM_EDIT,
00074 float fMax = MAX_NUM_EDIT,
00075 bool bClamp = false,
00076 int nNumNotches = NUM_SLIDER_NOTCHES,
00077 int nPrecision = CTRL_DEFAULT_PRECISION,
00078 bool bSigned = true );
00079
00080
00081
00082 void SetAlignment( BOOL bAlign = TRUE )
00083 {
00084 m_bAlign = bAlign;
00085 };
00086
00087 void SetData( float fValue,
00088 float fMin = MIN_NUM_EDIT,
00089 float fMax = MAX_NUM_EDIT,
00090 bool bClamp = false,
00091 int nNumNotches = NUM_SLIDER_NOTCHES,
00092 int nPrecision = CTRL_DEFAULT_PRECISION,
00093 bool bSigned = true );
00094
00095
00096 void GetSliderRange( float &fMin, float &fMax, bool &bClamp )
00097 {
00098 fMin = m_fMin;
00099 fMax = m_fMax;
00100 bClamp = m_bClamp;
00101
00102 }
00103
00104
00105 void SetSliderRange( float fMin, float fMax, bool bClamp )
00106 {
00107 m_fMin = fMin;
00108 m_fMax = fMax;
00109 m_bClamp = bClamp;
00110
00111 }
00112
00113 protected:
00114
00115 afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
00116 afx_msg void OnMouseMove(UINT nFlags, CPoint point);
00117 afx_msg void OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS FAR* lpncsp);
00118 afx_msg UINT OnNcHitTest(CPoint point);
00119 afx_msg void OnNcLButtonDown(UINT nHitTest, CPoint point);
00120 afx_msg void OnNcPaint();
00121 afx_msg void OnUpdate();
00122 afx_msg void OnEnable(BOOL bEnable);
00123 afx_msg void OnSize(UINT nType, int nCx, int nCy);
00124 afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
00125 afx_msg void OnKeyDown( UINT nChar, UINT nRepCnt, UINT nFlags );
00126
00127
00128 afx_msg LRESULT OnSliderDelta( WPARAM wParam, LPARAM lParam );
00129 afx_msg LRESULT OnSliderClose( WPARAM wParam, LPARAM lParam );
00130 afx_msg LRESULT OnSliderRangeChanged( WPARAM wParam, LPARAM lParam );
00131
00132 DECLARE_MESSAGE_MAP()
00133
00134 protected:
00135
00136
00137 void SliderButtonClicked();
00138 void DrawSliderButton( MouseButtonState nState = BUTTON_UP );
00139
00140
00141 BOOL IsScreenPtInSliderButtonRect( CPoint point );
00142
00143 void CheckPositionRange();
00144 int GetPosPerc();
00145
00146 void OnInvalidInput();
00147
00148 int GetIntPosition();
00149
00150
00151 protected:
00152
00153 float m_fMin, m_fMax;
00154 bool m_bClamp;
00155 int m_nNumNotches;
00156
00157 BOOL m_bAlign;
00158 BOOL m_bMouseCaptured;
00159 CRect m_rcButtonRect;
00160
00161 MouseButtonState m_buttonState;
00162
00163 CPopupSlider* m_pSlider;
00164
00165 CWnd* m_pParent;
00166
00167
00168 };
00169
00170
00171
00172
00173
00174
00175
00176 RMMFCUTIL_API void DDX_CRmSliderEdit( CDataExchange *pDX, int nIDC, CRmSliderEdit &rCFEC, BOOL bAlign);
00177
00178 #endif