#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.