#include <stdlib.h> #include <stdio.h> #include <FL/Fl.H> #include <FL/Fl_Window.H> #include <FL/Fl_Button.H> void beepcb(Fl_Object *, void *) { printf("\007"); fflush(stdout); } void exitcb(Fl_Object *, void *) { exit(0); } int main(int argc, char ** argv) { Fl_Window *window = new Fl_Window(320,65); window->begin(); Fl_Button *b1 = new Fl_Button(20, 20, 80, 25, "Beep"); b1->callback(beepcb,0); Fl_Button *b2 = new Fl_Button(120,20, 80, 25, "no op"); Fl_Button *b3 = new Fl_Button(220,20, 80, 25, "Exit"); b3->callback(exitcb,0); window->end(); window->show(argc,argv); while (1) Fl::wait(); }
In this example we make some button objects and make them do something through callbacks.
All objects have a single callback() function. It is called in response to an event on that object, exactly which event depends on the type of object. The function takes two arguments: a pointer to the object (you will usually need to cast this to the correct subclass) and a void* pointer to a piece of arbitrary user_data.
You don't have to give all the objects a callback, as the "no op" b2 object demonstrates. What these do is described in the next program.