/**************/ /* showdoub.c */ /**************************************************************************** PROGRAM: showdoub.c PURPOSE: Näyttää reaaliluvun ikkunaan. Tulos näytetään vain jos se on muuttunut "riittävästi" edellisestä kerrasta. Näin voidaan huoletta käyttää esim edit-kentissä EN_CHANGE-viestiä muuttamaan jotakin toista kenttää. Author: Vesa Lappalainen 13.7.1994 /***************************************************************************/ #include #include #include "showdoub.h" #include "math.h" static char s[50]; /***************************************************************************/ double GetDouble(HWND hDlg,WPARAM id,double def) { double d=def; GetDlgItemText(hDlg,id,s,sizeof(s)); if ( !s[0] ) return 0; sscanf(s,"%lf",&d); return d; } /***************************************************************************/ int ShowDouble(HWND hDlg,WPARAM id,double d) { double ad,old_d = GetDouble(hDlg,id,SHOW_NAN); if ( old_d != SHOW_NAN ) { /* Tutkitaan kannattaako tulos muuttaa */ ad = fabs(d); if ( fabs(old_d) > ad ) ad = fabs(old_d); if ( fabs(d -old_d) <= ad*0.0000001 ) return 1; /* Suht virhe isompaan */ } sprintf(s,"%-0.9lg",d); SetDlgItemText(hDlg,id,s); return 0; }