26template<UINT n>
struct TPowerValue {
28 VALUE = TPowerValue<n - 1>::VALUE * 10
31template<>
struct TPowerValue<0> {
34#define _POW10(X) (TPowerValue<X>::VALUE)
66 enum { POWER = _POW10(POW) };
75 virtual bool IsValidChar(UINT& _nChar, LONG& _lFlags,
const CString& strNowText)
77 if ( _nChar ==
'.' && strNowText.Find(
'.') < 0 )
101 double d = _tcstod(s, NULL);
103 double mx =
static_cast<double>(
m_xMax) / POWER;
104 double mn =
static_cast<double>(
m_xMin) / POWER;
116 if ( i != ii || d != dd )
118 ::MessageBeep(MB_ICONASTERISK);
131 double r =
static_cast<double>(ll) / POWER;
142 s.Format(_T(
"%%.%df"), POW);
156 double d = _tcstod(s, NULL) * POWER;
157 d += (d < 0.0) ? -0.5 : 0.5;
158 return static_cast<LONGLONG
>(d);
178 double d = xValue * POWER;
179 d += (d < 0.0) ? -0.5 : 0.5;
180 LONGLONG l =
AdjustValue(
static_cast<LONGLONG
>(d));
216 virtual void SetRange(
double xMin,
double xMax,
double step = 0.0)
218 m_xMin =
static_cast<LONGLONG
>(xMin * POWER);
219 m_xMax =
static_cast<LONGLONG
>(xMax * POWER);
228 m_step =
static_cast<int>(step * POWER);
void SetText(LPCTSTR lpszText, bool boIsNomoveSel=false)
[設定] 文字列設定
CString GetText(void) const
[取得] 入力文字取得
小数点付き数値専用Editコントロールテンプレート
virtual void SetValue(double xValue)
[設定] 値設定
virtual CString ValueToString(double xValue) const
[変換] 値文字列化
virtual CString ToString(LONGLONG ll) const
[変換] 数値から文字列作成.
virtual LONGLONG ToInteger(LPCTSTR s) const
[変換] 文字列から数値作成.
virtual bool IsValidChar(UINT &_nChar, LONG &_lFlags, const CString &strNowText)
[確認] 入力許可チェック
virtual void SetRange(double xMin, double xMax, double step=0.0)
[設定] 範囲指定
virtual void OnEditEnd(void)
[通知] フォーカスを失った時にコール
virtual void OnUpdateChar(void)
[通知] 入力時にコール
virtual bool GetValue(double &_xValue) const
[取得] 値取得
virtual LONGLONG AdjustValue(LONGLONG l) const
[変換] 数値丸め.
virtual bool IsValidChar(UINT &_nChar, LONG &_lFlags, const CString &strNowText)
[確認] 入力許可チェック
void Swap(T &t1, T &t2)
[変換] スワッパー.