BOOL ctl_rfloat_finish( ctl_elt *elt, HANDLE inst, HWND dlg, void *ptr ) /**********************************************************************/ /* end an float field */ { float value; char str[100]; BOOL any_max; if( !ctl_float_finish( elt, inst, dlg, ptr ) ) { return( FALSE ); } value = _value_float( ptr, elt ); any_max = elt->info.rfloat.max >= elt->info.rfloat.min; if( value < elt->info.rfloat.min || ( any_max && value > elt->info.rfloat.max ) ) { SetFocus( GetDlgItem( dlg, elt->control ) ); if( any_max ) { sprintf( str, "Value must be in the range %.2f to %.2f", elt->info.rfloat.min, elt->info.rfloat.max ); } else { sprintf( str, "Value must be greater than or equal to %.2f", elt->info.rfloat.min ); } MessageBox( dlg, str, NULL, MB_APPLMODAL | MB_ICONHAND | MB_OK ); return( FALSE ); } return( TRUE ); }
static bool ctl_rfloat_finish( ctl_elt *elt, WPI_INST inst, HWND dlg, void *ptr, finish_type ___f ) /****************************** ************************************/ /* end an float field */ { float value; char str[100]; bool any_max; if( !ctl_float_finish( elt, inst, dlg, ptr, ___f ) ) { return( false ); } value = _value_float( ptr, elt ); any_max = ( elt->info.rfloat.max >= elt->info.rfloat.min ); if( value < elt->info.rfloat.min || (any_max && value > elt->info.rfloat.max) ) { SetFocus( GetDlgItem( dlg, elt->control ) ); if( any_max ) { sprintf( str, "Value must be in the range %.2f to %.2f", elt->info.rfloat.min, elt->info.rfloat.max ); } else { sprintf( str, "Value must be greater than or equal to %.2f", elt->info.rfloat.min ); } MessageBox( dlg, str, NULL, MB_APPLMODAL | MB_ICONHAND | MB_OK ); return( false ); } return( true ); }
static BOOL ctl_float_start( ctl_elt *elt, WPI_INST inst, HWND dlg, void *ptr, BOOL ___b ) /*****************************************************************/ /* start a float field */ { char buf[50]; char *str; int dec; float value; inst = inst; value = _value_float( ptr, elt ); sprintf( buf, "%f", value ); for( str = buf + strlen( buf ) - 1; *str == '0'; --str ); for( dec = 0; *str != '.'; --str, ++dec ); if( dec < 2 ) { dec = 2; } sprintf( buf, "%-.*f", dec, value ); SetDlgItemText( dlg, elt->control, buf ); return( TRUE ); }
static bool ctl_float_finish( ctl_elt *elt, WPI_INST inst, HWND dlg, void *ptr, finish_type ___f ) /******************************************************************/ /* end a float field */ { char str[50]; float value; ___f=___f; inst = inst; GetDlgItemText( dlg, elt->control, str, 50 ); str[49] = '\0'; if( 1 == sscanf( str, "%f", &value ) ) { _value_float( ptr, elt ) = value; } else { SetFocus( GetDlgItem( dlg, elt->control ) ); MessageBox( dlg, "Invalid value: please re-enter it", NULL, MB_APPLMODAL | MB_ICONHAND | MB_OK ); return( false ); } return( true ); }