// helloask.cxx (example2a) #include #include #include #include #include #include // utility to convert anthing to a string #include template char* makestr(const T& i) { std::ostringstream os; os << i; std::string oss = os.str(); char* sp = new char[oss.length()+1]; sp[oss.copy(sp, std::string::npos)] = 0; return sp; } Fl_Int_Input* intinput; void copy_callback(Fl_Widget*, void* v) { Fl_Slider* slider = (Fl_Slider*)v; slider->value(atoi(intinput->value())); } void down_callback(Fl_Widget*, void* v) { Fl_Slider* slider = (Fl_Slider*)v; slider->value(slider->value()-1); intinput->value(makestr(slider->value())); } void up_callback(Fl_Widget*, void* v) { Fl_Slider* slider = (Fl_Slider*)v; slider->value(slider->value()+1); intinput->value(makestr(slider->value())); } void slider_callback(Fl_Widget* w, void*) { Fl_Slider* slider = (Fl_Slider*)w; intinput->value(makestr(slider->value())); } void exit_callback(Fl_Widget *, void *) { exit(0); } int main( ) { Fl_Window window(320, 90); window.begin(); Fl_Int_Input intinput(10,10,100,20); ::intinput = &intinput; intinput.value("0"); Fl_Button copy_button(110, 10, 100, 20, "copy to slider"); Fl_Slider slider(10,35,300,20); slider.type(FL_HORIZONTAL); slider.callback(slider_callback); copy_button.callback(copy_callback, &slider); slider.range(-10,10); slider.step(1); slider.value(0); Fl_Button down_button(50,60,50,20,"down"); down_button.callback(down_callback, &slider); Fl_Button up_button(150,60,50,20,"up"); up_button.callback(up_callback, &slider); Fl_Button exit_button(250,60,50,20,"exit"); exit_button.callback(exit_callback); window.end(); window.show(); return Fl::run(); }