/* doubedit.h */ #ifndef DOUBEDIT_H #define DOUBEDIT_H class TDoubleEdit : public TEdit { double value; protected: virtual double display() { char s[30]; // int i=get(); double d=value; sprintf(s,"%lg",d); SetWindowText(s); return d; } public: TDoubleEdit(TWindow* parent, int id, double d, int x, int y, int w, int h, uint textLimit = 0, TModule* module = 0) : TEdit(parent,id,"0",x,y,w,h,0,0,module) { Attr.Style |= SS_RIGHT; set(d); } TDoubleEdit(TWindow* parent, int resourceId, uint textLimit = 0, TModule* module = 0) : TEdit(parent,resourceId, textLimit, module) { set(0); } virtual ~TDoubleEdit() {} virtual double set(double d) { double ad = fabs(d); if ( fabs(value) > ad ) ad = fabs(value); if ( fabs(d - value) <= ad*0.0001 ) return d; // Suht virhe isompaan value = d; return display(); } virtual double get() const { return value; } virtual void update() { set(get()); display(); } virtual double operator=(double d) { return set(d); } virtual operator double() const { return get(); } virtual double operator++() { set(get()+1); return get(); } virtual double operator++(int) { int i=get(); set(get()+1); return i; } virtual double operator+=(double d) { set(get()+d); return get(); } virtual double operator-=(double d) { set(get()-d); return get(); } virtual double Refresh() { // Tätä pitää kutsua EN_CHANGE -viestin jälkeen char s[30]; GetText(s,sizeof(s)); value = 0; sscanf(s,"%lg",&value); return value; } }; #endif